v2 / vlib / v / tests / nested_fors_with_labels_test.v
91 lines · 87 sloc · 1.56 KB · 1af7b7c3dea222967188e8a640e87cfbd7fe064c
Raw
1const good = [
2 '> x: 0 | y: 0 | z: 0',
3 '> x: 0 | y: 0 | z: 1',
4 '> x: 0 | y: 1 | z: 0',
5 '> x: 0 | y: 1 | z: 1',
6 '> x: 1 | y: 0 | z: 0',
7 '> x: 1 | y: 0 | z: 1',
8 '> x: 1 | y: 1 | z: 0',
9 '> x: 1 | y: 1 | z: 1',
10]
11
12fn test_labeled_nested_loops_for_in() {
13 mut values := []string{}
14 abc: for x in 0 .. 2 {
15 def: for y in 0 .. 5 {
16 if y > 1 {
17 continue abc
18 }
19 xyz: for z in 0 .. 10 {
20 if z > 1 {
21 continue def
22 }
23 values << '> x: ${x} | y: ${y} | z: ${z}'
24 }
25 }
26 }
27 assert values == good
28}
29
30fn test_labeled_nested_loops_for_c_style() {
31 mut values := []string{}
32 abc: for x := 0; x < 2; x++ {
33 def: for y := 0; y < 5; y++ {
34 if y > 1 {
35 continue abc
36 }
37 xyz: for z := 0; z < 10; z++ {
38 if z > 1 {
39 continue def
40 }
41 values << '> x: ${x} | y: ${y} | z: ${z}'
42 }
43 }
44 }
45 assert values == good
46}
47
48fn test_labeled_nested_loops_for_in_array() {
49 mut values := []string{}
50 x_array := [0, 1]
51 y_array := [0, 1, 2, 3, 4]
52 z_array := [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
53 abc: for x in x_array {
54 def: for y in y_array {
55 if y > 1 {
56 continue abc
57 }
58 xyz: for z in y_array {
59 if z > 1 {
60 continue def
61 }
62 values << '> x: ${x} | y: ${y} | z: ${z}'
63 }
64 }
65 }
66 assert values == good
67}
68
69fn test_labeled_nested_loops_for_condition() {
70 mut values := []string{}
71 mut x := -1
72 abc: for x < 1 {
73 x++
74 mut y := -1
75 def: for y < 5 {
76 y++
77 if y > 1 {
78 continue abc
79 }
80 mut z := -1
81 xyz: for z < 10 {
82 z++
83 if z > 1 {
84 continue def
85 }
86 values << '> x: ${x} | y: ${y} | z: ${z}'
87 }
88 }
89 }
90 assert values == good
91}
92