1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/cmd/tools/vwhere/vwhere_test.v
2022-07-15 07:59:11 +03:00

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'
},
]
}