v2 / vlib / v / tests / options / option_if_assign_and_fallthrough_test.v
46 lines · 42 sloc · 741 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn err_call(ok bool) ?int {
2 if ok {
3 return 42
4 }
5 return none
6}
7
8fn test_if_opt() {
9 if val := err_call(true) {
10 eprintln(' val should be available here: ${val}')
11 assert val == 42
12 }
13 assert true
14}
15
16fn test_simple_else_if_guard() {
17 if false {
18 assert false
19 } else if val := err_call(true) {
20 assert val == 42
21 } else {
22 assert false
23 }
24}
25
26fn test_multiple_else_if_guard() {
27 if _ := err_call(false) {
28 assert false
29 } else if val := err_call(false) {
30 assert val == 0 // assert false
31 } else if val := err_call(true) {
32 assert val == 42
33 } else {
34 assert false
35 }
36}
37
38fn test_opt_with_fall_through() {
39 mut x := 1
40 err_call(false) or {
41 eprintln(' this *should* be an error: ${err}')
42 x++
43 assert true
44 }
45 assert x == 2
46}
47