Files
herolib/lib/data/paramsparser/parser_test.v
2024-12-25 09:23:31 +01:00

102 lines
1.9 KiB
V

module paramsparser
fn test_parse_list() ! {
mut params := parse("list0: 'Apple'")!
// Test parsing lists with single string item
mut fruit_list := [
"list0: 'Apple'",
'list1: Apple',
'list2:Apple',
'list3: Apple ',
]
for i, param in fruit_list {
params = parse(param)!
assert params == Params{
params: [
Param{
key: 'list${i}'
value: 'Apple'
comment: ''
},
]
args: []
comments: []
}
}
// Test parsing lists with multiple string items
fruit_list = [
'list0: Apple, Banana',
'list1: Apple ,Banana',
'list2: Apple , Banana',
'list3: Apple , Banana',
"list4: 'Apple', Banana",
"list5: Apple, 'Banana'",
"list6: 'Apple', 'Banana'",
]
for i, param in fruit_list {
params = parse(param)!
assert params == Params{
params: [
Param{
key: 'list${i}'
value: 'Apple,Banana'
comment: ''
},
]
args: []
comments: []
}
}
// Test parsing lists with multi-word items
fruit_list = [
'list0: Apple, "Dragon Fruit", "Passion Fruit"',
'list1: "Apple", "Dragon Fruit", "Passion Fruit"',
"list2: Apple, 'Dragon Fruit', 'Passion Fruit'",
"list3: 'Apple', 'Dragon Fruit', 'Passion Fruit'",
]
for i, param in fruit_list {
params = parse(param)!
assert params == Params{
params: [
Param{
key: 'list${i}'
value: 'Apple,"Dragon Fruit","Passion Fruit"'
comment: ''
},
]
args: []
comments: []
}
}
// // test parsing lists in square brackets
// params = parse("list1: ['Kiwi']")!
// assert params == Params{
// params: [Param{
// key: 'list1'
// value: "['Kiwi']"
// comment: ''
// }]
// args: []
// comments: []
// }
// params = parse("list2: 'Apple', 'Banana'")!
// assert params == Params{
// params: [
// Param{
// key: 'list2'
// value: "['Apple', 'Banana']"
// comment: ''
// },
// ]
// args: []
// comments: []
// }
}