v2 / vlib / v / tests / options / option_ptr_test.v
56 lines · 50 sloc · 786 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn test_simple_opt_ptr() {
2 val := 123
3 mut var := unsafe { ?&int(&val) }
4 assert var? == unsafe { &int(&val) }
5}
6
7fn test_simple_writing() {
8 val := 123
9 mut var := unsafe { ?&int(&val) }
10 unsafe {
11 *var? = 321
12 }
13 assert val == 321
14}
15
16fn test_simple_deref() ? {
17 val := 123
18 mut var := unsafe { ?&int(&val) }
19 assert *var? == val
20 mut r := var?
21 unsafe {
22 *r = 321
23 }
24 assert val == 321
25}
26
27fn f_ref(val ?&int) ? {
28 t := 123
29 assert *val? == t
30}
31
32fn test_simple_writing2() {
33 val := 123
34 mut var := unsafe { ?&int(&val) }
35 unsafe {
36 *var? = 321
37 }
38 x := *var?
39 assert val == x
40}
41
42fn test_simple_fn() {
43 var := 123
44 f_ref(&var)
45}
46
47fn test_unset_opt_ptr() {
48 val := 123
49 mut var := unsafe { ?&int(&val) }
50 unsafe {
51 *var? = 1
52 }
53 assert var != none
54 var = none
55 assert var == none
56}
57