v2 / vlib / v / tests / builtin_arrays / array_map_or_test.v
118 lines · 110 sloc · 1.58 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn test_array_or() {
2 m := [3, 4, 5]
3 mut testvar := 17
4 el := m[4] or {
5 testvar = -43
6 999
7 }
8 good := m[1] or {
9 testvar = 11
10 0
11 }
12 assert testvar == -43
13 assert el == 999
14 assert good == 4
15}
16
17@[direct_array_access]
18fn test_array_or_direct() {
19 m := [3, 4, 5]
20 mut testvar := 17
21 el := m[4] or {
22 testvar = -43
23 999
24 }
25 good := m[1] or {
26 testvar = 11
27 0
28 }
29 assert testvar == -43
30 assert el == 999
31 assert good == 4
32}
33
34fn test_map_or() {
35 m := {
36 'as': 3
37 'qw': 4
38 'kl': 5
39 }
40 mut testvar := -21
41 el := m['pp'] or {
42 testvar = 7931
43 7
44 }
45 good := m['kl'] or {
46 testvar = -45
47 999
48 }
49 assert testvar == 7931
50 assert el == 7
51 assert good == 5
52}
53
54fn get_map_el(key string) !int {
55 m := {
56 'as': 3
57 'qw': 4
58 'kl': 5
59 }
60 r := m[key]!
61 return r
62}
63
64fn get_arr_el(i int) !int {
65 m := [3, 4, 5]
66 r := m[i]!
67 return r
68}
69
70@[direct_array_access]
71fn get_arr_el_direct(i int) !int {
72 m := [3, 4, 5]
73 r := m[i]!
74 return r
75}
76
77fn test_propagation() {
78 mut testvar1 := 12
79 mut testvar2 := 78
80 e := get_map_el('vv') or {
81 testvar1 = -34
82 7
83 }
84 f := get_map_el('as') or {
85 testvar1 = 67
86 23
87 }
88 g := get_arr_el(3) or {
89 testvar2 = 99
90 12
91 }
92 h := get_arr_el(0) or {
93 testvar2 = 177
94 int(-67)
95 }
96 m := get_arr_el_direct(3) or { 17 }
97 n := get_arr_el_direct(0) or { -73 }
98 assert testvar1 == -34
99 assert testvar2 == 99
100 assert e == 7
101 assert f == 3
102 assert g == 12
103 assert h == 3
104 assert m == 17
105 assert n == 3
106}
107
108fn get_arr_el_nested(i int) !int {
109 ind := [2, 1, 0, 5]
110 m := [3, 4, 5]
111 r := m[ind[i]]!
112 return r
113}
114
115fn test_nested_array_propagation() {
116 g := get_arr_el_nested(3) or { 12 }
117 assert g == 12
118}
119