53 lines
802 B
V
53 lines
802 B
V
fn test_empty_string_access() {
|
|
mut res := ''
|
|
a := ''
|
|
if a[0] or { `0` } == `1` {
|
|
res = 'good'
|
|
} else {
|
|
res = 'bad'
|
|
}
|
|
assert res == 'bad'
|
|
}
|
|
|
|
fn test_good_string_access() {
|
|
mut res := ''
|
|
a := 'abcd'
|
|
if a[2] or { `0` } == `c` {
|
|
res = 'good'
|
|
} else {
|
|
res = 'bad'
|
|
}
|
|
assert res == 'good'
|
|
}
|
|
|
|
fn test_if_guard_bad() {
|
|
mut res := 'bad'
|
|
a := 'xy'
|
|
if z := a[2] {
|
|
res = '${z:c}'
|
|
}
|
|
assert res == 'bad'
|
|
}
|
|
|
|
fn test_if_guard_good() {
|
|
mut res := 'bad'
|
|
a := 'xy123'
|
|
if z := a[2] {
|
|
res = '${z:c}'
|
|
}
|
|
assert res == '1'
|
|
}
|
|
|
|
fn get_propagate(s string, i int) ?string {
|
|
c := s[i] ?
|
|
return 'got `${c:c}`'
|
|
}
|
|
|
|
fn test_propagation() {
|
|
s := 'abcd'
|
|
x := get_propagate(s, 2) or { '$err' }
|
|
y := get_propagate(s, 5) or { '$err' }
|
|
assert x == 'got `c`'
|
|
assert y == 'string index out of range'
|
|
}
|