v2 / vlib / v / tests / fns / fn_assignment_test.v
62 lines · 45 sloc · 899 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn test() int {
2 return 10
3}
4
5fn test1() int {
6 return 11
7}
8
9fn test_fn_assignment_var() {
10 mut a := 0
11 mut b := 0
12 a, b = test(), test1()
13
14 assert a == 10
15 assert b == 11
16
17 a, b = test(), test()
18 assert a == 10
19 assert b == 10
20
21 a, b = test(), 12
22
23 assert a == 10
24 assert b == 12
25
26 a, b = 12, test()
27
28 assert a == 12
29 assert b == 10
30}
31
32fn test_fn_assignment_array() {
33 mut a := [0, 1]
34
35 a[0], a[1] = test(), test1()
36
37 assert a[0] == 10
38 assert a[1] == 11
39
40 a[0], a[1] = test(), test()
41
42 assert a[0] == 10
43 assert a[1] == 10
44
45 a[0], a[1] = test(), 12
46
47 assert a[0] == 10
48 assert a[1] == 12
49
50 a[0], a[1] = 12, test()
51 assert a[0] == 12
52 assert a[1] == 10
53}
54
55fn test_fn_variables_can_be_assigned_pointers() {
56 mut fn_ptr := fn (_ voidptr, _ u64) {}
57 // println(voidptr(fn_ptr))
58 assert fn_ptr != unsafe { nil }
59 fn_ptr = unsafe { nil }
60 // aprintln(voidptr(fn_ptr))
61 assert fn_ptr == unsafe { nil }
62}
63