v2 / vlib / v / tests / loops / for_label_continue_break_test.v
89 lines · 86 sloc · 1.36 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn test_for_c_label_continue_break() {
2 mut rets := []int{}
3 outer: for i := 4; true; i++ {
4 println(i)
5 rets << i
6 for {
7 if i < 7 {
8 continue outer
9 } else {
10 break outer
11 }
12 }
13 }
14 assert rets.len == 4
15 assert rets[0] == 4
16 assert rets[1] == 5
17 assert rets[2] == 6
18 assert rets[3] == 7
19}
20
21fn test_for_in_array_label_continue_break() {
22 mut rets := []int{}
23 arr := [4, 5, 6, 7, 8, 9]
24 outer: for i in arr {
25 println(i)
26 rets << i
27 for {
28 if i < 7 {
29 continue outer
30 } else {
31 break outer
32 }
33 }
34 }
35 assert rets.len == 4
36 assert rets[0] == 4
37 assert rets[1] == 5
38 assert rets[2] == 6
39 assert rets[3] == 7
40}
41
42fn test_for_in_fixed_array_label_continue_break() {
43 mut rets := []int{}
44 arr := [4, 5, 6, 7, 8, 9]!
45 outer: for i in arr {
46 println(i)
47 rets << i
48 for {
49 if i < 7 {
50 continue outer
51 } else {
52 break outer
53 }
54 }
55 }
56 assert rets.len == 4
57 assert rets[0] == 4
58 assert rets[1] == 5
59 assert rets[2] == 6
60 assert rets[3] == 7
61}
62
63fn test_for_in_map_label_continue_break() {
64 mut rets := []string{}
65 m := {
66 'a': 4
67 'b': 5
68 'c': 6
69 'd': 7
70 'e': 8
71 'f': 9
72 }
73 outer: for k, v in m {
74 println('${k}, ${v}')
75 rets << '${k}, ${v}'
76 for {
77 if v < 7 {
78 continue outer
79 } else {
80 break outer
81 }
82 }
83 }
84 assert rets.len == 4
85 assert rets[0] == 'a, 4'
86 assert rets[1] == 'b, 5'
87 assert rets[2] == 'c, 6'
88 assert rets[3] == 'd, 7'
89}
90