v2 / vlib / v / tests / builtin_arrays / array_map_ref_test.v
56 lines · 54 sloc · 1.0 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn mod_map(shared m map[string]f64) {
2 lock m {
3 m['y'] = 6.5
4 m['op'] = -13.0625
5 }
6}
7
8fn mod_array(shared a []f64) {
9 lock a {
10 a[5] = -13.5
11 a[7] = 167.125
12 }
13}
14
15fn test_array_map_ref() {
16 // test initialization
17 mut m := map[string]int{}
18 mut m_ref := &map[string]f64{}
19 mut a := []int{len: 10}
20 mut a_ref := &[]f64{len: 2, cap: 12}
21 shared m_shared := &map[string]f64{}
22 shared a_shared := &[]f64{len: 9, cap: 12}
23 // test usage
24 m['a'] = 3
25 unsafe {
26 m_ref['b'] = 12.25
27 }
28 a << 67
29 a << 45
30 assert a.len == 12
31 a_ref << 73
32 a_ref << 12
33 a_ref << 8
34 unsafe {
35 a_ref[1] = 17
36 }
37 assert a_ref.len == 5
38 t1 := spawn mod_map(shared m_shared)
39 t2 := spawn mod_array(shared a_shared)
40 lock m_shared, a_shared {
41 a_shared[4] = -12.25
42 m_shared['tz'] = 73.75
43 }
44 t1.wait()
45 t2.wait()
46 rlock m_shared {
47 assert m_shared['y'] == 6.5
48 assert m_shared['op'] == -13.0625
49 assert m_shared['tz'] == 73.75
50 }
51 rlock a_shared {
52 assert a_shared[4] == -12.25
53 assert a_shared[5] == -13.5
54 assert a_shared[7] == 167.125
55 }
56}
57