mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
187 lines
4.4 KiB
V
187 lines
4.4 KiB
V
|
module main
|
||
|
|
||
|
import os
|
||
|
|
||
|
const test_dir = os.join_path(os.dir(vexe), 'cmd', 'tools', 'vwhere', 'test')
|
||
|
|
||
|
fn test_create_finder() {
|
||
|
mut fdr := Finder{}
|
||
|
|
||
|
fdr.configure_from_arguments(['some'])
|
||
|
assert fdr.symbol == .@fn
|
||
|
assert fdr.name == 'some'
|
||
|
assert fdr.visib == .all
|
||
|
assert fdr.mutab == .any
|
||
|
|
||
|
fdr.configure_from_arguments(['fn', 'some', '-vis', 'pub'])
|
||
|
assert fdr.symbol == .@fn
|
||
|
assert fdr.name == 'some'
|
||
|
assert fdr.visib == .@pub
|
||
|
|
||
|
fdr.configure_from_arguments(['method', 'Some.some', '-vis', 'pri'])
|
||
|
assert fdr.symbol == .method
|
||
|
assert fdr.receiver == 'Some'
|
||
|
assert fdr.name == 'some'
|
||
|
assert fdr.visib == .pri
|
||
|
|
||
|
fdr.configure_from_arguments(['struct', 'Some', '-mod', 'foo'])
|
||
|
assert fdr.symbol == .@struct
|
||
|
assert fdr.name == 'Some'
|
||
|
assert fdr.modul == 'foo'
|
||
|
|
||
|
fdr.configure_from_arguments(['interface', 'Some', '-mod', 'foo', '-dir', 'bar'])
|
||
|
assert fdr.symbol == .@interface
|
||
|
assert fdr.name == 'Some'
|
||
|
assert fdr.modul == 'foo'
|
||
|
assert fdr.dirs == ['bar']
|
||
|
|
||
|
fdr.configure_from_arguments(['enum', 'Some', '-dir', 'bar', '-dir', 'baz'])
|
||
|
assert fdr.symbol == .@enum
|
||
|
assert fdr.name == 'Some'
|
||
|
assert fdr.dirs == ['bar', 'baz']
|
||
|
|
||
|
fdr.configure_from_arguments(['const', 'some'])
|
||
|
assert fdr.symbol == .@const
|
||
|
assert fdr.name == 'some'
|
||
|
|
||
|
fdr.configure_from_arguments(['var', 'some', '-mut', 'yes'])
|
||
|
assert fdr.symbol == .var
|
||
|
assert fdr.name == 'some'
|
||
|
assert fdr.mutab == .yes
|
||
|
|
||
|
fdr.configure_from_arguments(['var', 'some', '-mut', 'not'])
|
||
|
assert fdr.symbol == .var
|
||
|
assert fdr.name == 'some'
|
||
|
assert fdr.mutab == .not
|
||
|
|
||
|
fdr.configure_from_arguments(['regexp', '.*some.*'])
|
||
|
assert fdr.symbol == .regexp
|
||
|
assert fdr.name == '.*some.*'
|
||
|
}
|
||
|
|
||
|
fn test_find_mut_var() {
|
||
|
args := ['var', 'p_2', '-mut', 'yes', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_one.v')
|
||
|
line: 7
|
||
|
text: "mut p_2 := Programmer{'Programmer', 'Mutable'}"
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_non_mut_var() {
|
||
|
args := ['var', 'p_1', '-mut', 'not', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_one.v')
|
||
|
line: 6
|
||
|
text: "p_1 := Programmer{'Programmer', 'Inmutable'}"
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_method() {
|
||
|
args := ['method', 'Programmer.drink', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_one.v')
|
||
|
line: 15
|
||
|
text: 'fn (p Programmer) drink(cups int) string'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_pub_method() {
|
||
|
args := ['method', 'Brogrammer.drink', '-vis', 'pub', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_one.v')
|
||
|
line: 24
|
||
|
text: 'pub fn (p Brogrammer) drink(glasses int) string'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_pri_const() {
|
||
|
args := ['const', 'y', '-vis', 'pri', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_two.v')
|
||
|
line: 5
|
||
|
text: 'y = 100'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_pub_enum() {
|
||
|
args := ['enum', 'Public', '-vis', 'pub', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_two.v')
|
||
|
line: 9
|
||
|
text: 'pub enum Public'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_pri_enum() {
|
||
|
args := ['enum', 'Private', '-vis', 'pri', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_two.v')
|
||
|
line: 14
|
||
|
text: 'enum Private'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_fn() {
|
||
|
args := ['fn', 'some_function_name', '-dir', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'file_two.v')
|
||
|
line: 27
|
||
|
text: 'fn some_function_name(foo string, bar int) string'
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
|
||
|
fn test_find_pub_const_with_mod() {
|
||
|
args := ['const', 'b', '-vis', 'pub', '-mod', test_dir]
|
||
|
mut fdr := Finder{}
|
||
|
fdr.configure_from_arguments(args)
|
||
|
fdr.search_for_matches()
|
||
|
assert fdr.matches == [
|
||
|
Match{
|
||
|
path: os.join_path(test_dir, 'nested_mod', 'nested_file.v')
|
||
|
line: 5
|
||
|
text: 'b = 60'
|
||
|
},
|
||
|
]
|
||
|
}
|