122 lines
1.6 KiB
V
122 lines
1.6 KiB
V
fn test_array_or() {
|
|
m := [3, 4, 5]
|
|
mut testvar := 17
|
|
el := m[4] or {
|
|
testvar = -43
|
|
999
|
|
}
|
|
good := m[1] or {
|
|
testvar = 11
|
|
0
|
|
}
|
|
assert testvar == -43
|
|
assert el == 999
|
|
assert good == 4
|
|
}
|
|
|
|
[direct_array_access]
|
|
fn test_array_or_direct() {
|
|
m := [3, 4, 5]
|
|
mut testvar := 17
|
|
el := m[4] or {
|
|
testvar = -43
|
|
999
|
|
}
|
|
good := m[1] or {
|
|
testvar = 11
|
|
0
|
|
}
|
|
assert testvar == -43
|
|
assert el == 999
|
|
assert good == 4
|
|
}
|
|
|
|
fn test_map_or() {
|
|
m := {
|
|
'as': 3
|
|
'qw': 4
|
|
'kl': 5
|
|
}
|
|
mut testvar := -21
|
|
el := m['pp'] or {
|
|
testvar = 7931
|
|
7
|
|
}
|
|
good := m['kl'] or {
|
|
testvar = -45
|
|
999
|
|
}
|
|
assert testvar == 7931
|
|
assert el == 7
|
|
assert good == 5
|
|
}
|
|
|
|
|
|
fn get_map_el(key string) ?int {
|
|
m := {'as': 3, 'qw': 4, 'kl': 5}
|
|
r := m[key] ?
|
|
return r
|
|
}
|
|
|
|
fn get_arr_el(i int) ?int {
|
|
m := [3, 4, 5]
|
|
r := m[i] ?
|
|
return r
|
|
}
|
|
|
|
[direct_array_access]
|
|
fn get_arr_el_direct(i int) ?int {
|
|
m := [3, 4, 5]
|
|
r := m[i] ?
|
|
return r
|
|
}
|
|
|
|
fn test_propagation() {
|
|
mut testvar1 := 12
|
|
mut testvar2 := 78
|
|
e := get_map_el('vv') or {
|
|
testvar1 = -34
|
|
7
|
|
}
|
|
f := get_map_el('as') or {
|
|
testvar1 = 67
|
|
23
|
|
}
|
|
g := get_arr_el(3) or {
|
|
testvar2 = 99
|
|
12
|
|
}
|
|
h := get_arr_el(0) or {
|
|
testvar2 = 177
|
|
int(-67)
|
|
}
|
|
m := get_arr_el_direct(3) or {
|
|
17
|
|
}
|
|
n := get_arr_el_direct(0) or {
|
|
-73
|
|
}
|
|
assert testvar1 == -34
|
|
assert testvar2 == 99
|
|
assert e == 7
|
|
assert f == 3
|
|
assert g == 12
|
|
assert h == 3
|
|
assert m == 17
|
|
assert n == 3
|
|
}
|
|
|
|
fn get_arr_el_nested(i int) ?int {
|
|
ind := [2, 1, 0, 5]
|
|
m := [3, 4, 5]
|
|
r := m[ind[i]] ?
|
|
return r
|
|
}
|
|
|
|
fn test_nested_array_propagation() {
|
|
g := get_arr_el_nested(3) or {
|
|
12
|
|
}
|
|
assert g == 12
|
|
}
|