v2 / vlib / v / tests / conditions / ifs / if_expr_of_option_test.v
55 lines · 46 sloc · 810 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn foo1() ?int {
2 return if true { 0 } else { none }
3}
4
5fn foo2() ?int {
6 return if true { 1 } else { error('foo2 error') }
7}
8
9fn foo3() ?int {
10 return if false { 1 } else { error('foo3 error') }
11}
12
13fn foo4() ?int {
14 return if true { 2 } else { 0 }
15}
16
17fn test_if_expr_of_option() {
18 a1 := foo1() or { panic('error') }
19 println(a1)
20 assert a1 == 0
21
22 a2 := foo2() or { panic('error') }
23 println(a2)
24 assert a2 == 1
25
26 if _ := foo3() {
27 assert false
28 } else {
29 assert err.msg() == 'foo3 error'
30 }
31
32 a4 := foo4() or { panic('error') }
33 println(a4)
34 assert a4 == 2
35}
36
37fn foo_complex() ?int {
38 a := 2
39 return if a > 1 {
40 mut b := 1
41 b *= 10
42 b
43 } else {
44 mut c := 0
45 c += 2
46 println(c)
47 none
48 }
49}
50
51fn test_if_expr_of_option_complex() {
52 a := foo_complex() or { panic('error') }
53 println(a)
54 assert a == 10
55}
56