v2 / vlib / v / tests / loops / for_loop_with_option_test.v
35 lines · 32 sloc · 703 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Test {
2 a ?[]int
3 b ?[]string
4 c ?[]f64
5 d ?[][]string
6}
7
8fn run_loop[U](val U, field_name string) []string {
9 mut out := []string{}
10 $for field in U.fields {
11 variable := val.$(field.name)
12 if field_name == field.name {
13 for element in variable {
14 println(element)
15 out << element.str()
16 }
17 }
18 }
19 return out
20}
21
22fn test_main() {
23 test := Test{
24 a: [1, 2, 3]
25 b: ['foo', 'bar']
26 c: [1.2, 2.3]
27 d: [['foo'], ['bar']]
28 }
29
30 // println(run_loop(test, 'a'))
31 assert run_loop(test, 'a').str() == "['1', '2', '3']"
32 assert run_loop(test, 'b').str() == "['foo', 'bar']"
33 assert run_loop(test, 'c').str() == "['1.2', '2.3']"
34 assert run_loop(test, 'd').str() == "['['foo']', '['bar']']"
35}
36