v2 / vlib / sync / array_rlock_test.v
38 lines · 37 sloc · 519 bytes · 757929392e0e7a75fc1272116460981e589737d5
Raw
1fn test_shared_modification() {
2 shared foo := &[2, 0, 5]
3 lock foo {
4 unsafe {
5 foo[1] = 3
6 foo[0] *= 7
7 foo[1]--
8 foo[2] -= 2
9 }
10 }
11 rlock foo {
12 unsafe {
13 assert foo[0] == 14
14 assert foo[1] == 2
15 assert foo[2] == 3
16 }
17 }
18}
19
20@[direct_array_access]
21fn test_shared_direct_modification() {
22 shared foo := &[2, 0, 5]
23 lock foo {
24 unsafe {
25 foo[1] = 3
26 foo[0] *= 7
27 foo[1]--
28 foo[2] -= 2
29 }
30 }
31 rlock foo {
32 unsafe {
33 assert foo[0] == 14
34 assert foo[1] == 2
35 assert foo[2] == 3
36 }
37 }
38}
39