v2 / vlib / v / tests / builtin_arrays / fixed_array_test.v
140 lines · 126 sloc · 2.36 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1fn test_fixed_array_can_be_assigned() {
2 x := 2.32
3 mut v := [8]f64{}
4 assert v[1] == 0
5 v = [1.0, x, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]!
6 assert v[1] == x
7 v[1] = 2.0
8 for i, e in v {
9 assert e == i + 1
10 }
11 v = [8]f64{}
12 assert v[1] == 0
13 // test slicing
14 for e in v[0..v.len] {
15 assert e == 0
16 }
17 v = [8]f64{init: 3.0}
18 assert v[1] == 3.0
19}
20
21fn test_fixed_array_assignment() {
22 mut a := [2]int{}
23 a[0] = 111
24 a[1] = 222
25 b := a
26 assert b[0] == a[0]
27 assert b[1] == a[1]
28 mut c := [2]int{}
29 c = a
30 assert c[0] == a[0]
31 assert c[1] == a[1]
32 d := [3]int{init: 333}
33 for val in d {
34 assert val == 333
35 }
36 e := [3]string{init: 'vlang'}
37 for val in e {
38 assert val == 'vlang'
39 }
40}
41
42fn test_fixed_array_can_be_used_in_declaration() {
43 x := 2.32
44 v := [1.0, x, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]!
45 assert v.len == 8
46 assert v[1] == x
47}
48
49struct Context {
50pub mut:
51 vb [8]f64
52}
53
54fn test_fixed_array_can_be_assigned_to_a_struct_field() {
55 mut ctx := Context{}
56 assert ctx.vb.len == 8
57 x := 2.32
58 ctx.vb = [1.1, x, 3.3, 4.4, 5.0, 6.0, 7.0, 8.9]!
59 assert ctx.vb[1] == x
60 assert ctx.vb[7] == 8.9
61 for i, e in ctx.vb {
62 assert e == ctx.vb[i]
63 }
64 assert ctx.vb == ctx.vb
65 /*
66 println( ctx.vb[0] )
67 println( ctx.vb[1] )
68 println( ctx.vb[2] )
69 println( ctx.vb[3] )
70 */
71}
72
73fn multiply_by_two(mut arr [3]int) {
74 for i in 0 .. arr.len {
75 arr[i] *= 2
76 }
77}
78
79fn change_first_element(mut arr [3][3]int) {
80 arr[0][0] = 0
81}
82
83fn test_fixed_array_can_be_passed_as_mut_arg() {
84 mut arr := [1, 2, 3]!
85 multiply_by_two(mut arr)
86 assert arr == [2, 4, 6]!
87 mut arr2 := [[1, 2, 3]!, [4, 5, 6]!, [7, 8, 9]!]!
88 change_first_element(mut arr2)
89 assert arr2 == [[0, 2, 3]!, [4, 5, 6]!, [7, 8, 9]!]!
90}
91
92fn test_iteration_over_fixed_array() {
93 mut s := u16(0)
94 arr := [u16(3), 2, 17, 23]!
95 for v in arr {
96 s += v
97 }
98 assert s == 45
99}
100
101fn test_iteration_over_fixed_array_literal() {
102 mut s := 0.0
103 for v in [0.5, -2.25, 3.75, 12.0, 13.25]! {
104 s += v
105 }
106 assert s == 27.25
107}
108
109fn calc_size(a [3]int) {
110 mut s := 0
111 for i in a {
112 println(i)
113 s += i
114 }
115 assert s == 6
116}
117
118fn test_for_in_fixed_array() {
119 arr := [1, 2, 3]!
120 calc_size(arr)
121}
122
123//
124
125fn print_fixed_arr(a [2]int) {
126 println('a: ${a}')
127 assert a == [1, 2]!
128 tmp := a
129 println('tmp: ${tmp}')
130 assert tmp == [1, 2]!
131}
132
133fn test_assignment_of_a_fixed_array_passed_as_parameter() {
134 arr := [1, 2]!
135 assert arr == [1, 2]!
136 tmp := arr
137 assert tmp == [1, 2]!
138 println(tmp) // [1, 2]
139 print_fixed_arr(arr)
140}
141