v2 / vlib / v / tests / loops / for_in_ref_map_test.v
48 lines · 43 sloc · 773 bytes · 1411c2710b03c53fa0de08d39c656d98721783f6
Raw
1fn test_for_in_ref_val_ref_map() {
2 mut mp := {
3 'a': 1
4 'b': 2
5 'c': 3
6 'd': 4
7 'e': 5
8 }
9 mut rets := map[string]&int{}
10 mut expects := map[string]&int{}
11
12 for k, mut val in mp {
13 expects[k] = unsafe { val }
14 }
15 for k, val in &mp {
16 rets[k] = unsafe { val }
17 }
18
19 for k, val in &mp {
20 assert voidptr(val) == voidptr(unsafe { expects[k] })
21 }
22 assert rets == expects
23}
24
25fn test_for_in_ref_val_ref_map_ident() {
26 mut mp_ := {
27 'a': 1
28 'b': 2
29 'c': 3
30 'd': 4
31 'e': 5
32 }
33 mp := &mp_
34 mut rets := map[string]&int{}
35 mut expects := map[string]&int{}
36
37 for k, mut val in mp_ {
38 expects[k] = unsafe { val }
39 }
40 for k, val in mp {
41 rets[k] = unsafe { val }
42 }
43
44 for k, val in mp {
45 assert voidptr(val) == voidptr(unsafe { expects[k] })
46 }
47 assert rets == expects
48}
49