v2 / vlib / v / tests / builtin_arrays / array_test.v
76 lines · 65 sloc · 1.25 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1enum Foo {
2 zero
3 first = 1
4 third = 3
5 fourth
6}
7
8const enum_size = i32(Foo.third)
9
10fn test_enum_val_as_fixed_array_size() {
11 arr1 := [int(Foo.first)]int{}
12 assert arr1 == [0]!
13
14 // TODO: check why it fails on MSVC
15 $if !msvc {
16 arr2 := [enum_size]int{}
17 assert arr2 == [0, 0, 0]!
18 }
19
20 arr3 := [int(Foo.fourth)]int{}
21 assert arr3 == [0, 0, 0, 0]!
22}
23
24fn test_for_in_array_named_array() {
25 mut array := [1]
26 for elem in array {
27 assert elem == 1
28 }
29 for mut elem in array {
30 assert *elem == 1
31 elem = 2
32 assert *elem == 2
33 }
34}
35
36fn test_for_in_shared_array_named_array() {
37 shared array := &[1]
38 rlock array {
39 for elem in array {
40 assert elem == 1
41 }
42 }
43}
44
45fn test_fixed_array_to_dynamic_array() {
46 y := [1, 2, 3]!
47 mut x := unsafe { y[..] }
48 x << 4
49 assert x.len == 4
50}
51
52fn test_append_array_used_as_fn_param() {
53 mut arr1 := [][]string{}
54 mut arr2 := [][]string{}
55 mut arr3 := []string{}
56 arr4 := []string{}
57 arr1 << arr2
58 arr1 << arr3
59 arr3 << arr4
60 append_2d_2d(mut arr1, arr2)
61 append_2d_1d(mut arr1, arr3)
62 append_1d_1d(mut arr3, arr4)
63 assert true
64}
65
66fn append_2d_2d(mut arr1 [][]string, arr2 [][]string) {
67 arr1 << arr2
68}
69
70fn append_2d_1d(mut arr1 [][]string, arr2 []string) {
71 arr1 << arr2
72}
73
74fn append_1d_1d(mut arr1 []string, arr2 []string) {
75 arr1 << arr2
76}
77