v2 / vlib / v / tests / aliases / array_alias_test.v
65 lines · 60 sloc · 1.32 KB · 33ff7c136b662a553770dfdd9fbac3d331943767
Raw
1module main
2
3type OneD = []Thing
4
5struct Thing {
6 item int
7}
8
9fn good() [][]Thing {
10 println('start good()')
11 mut two_d := [][]Thing{}
12 mut one_d := []Thing{}
13 one_d << Thing{1}
14 one_d << Thing{2}
15 two_d << one_d
16 assert two_d.len == 1, 'two_d length not 1'
17 for i, one in two_d {
18 for j, item in one {
19 println('two_d[${i}][${j}]=${item}')
20 assert item == Thing{j + 1}
21 }
22 }
23 println('end good()')
24 return two_d
25}
26
27fn bad() []OneD {
28 println('start bad()')
29 mut two_d := []OneD{}
30 mut one_d := OneD{}
31 one_d << Thing{1}
32 one_d << Thing{2}
33 assert one_d.len == 2, 'one_d length not 2'
34 assert one_d[0] == Thing{1}, 'one_d[0] not 1'
35 assert one_d[1] == Thing{2}, 'one_d[1] not 2'
36 two_d << one_d
37 assert two_d.len == 1, 'two_d length not 1'
38 for i, one in two_d {
39 for j, item in one {
40 println('two_d[${i}][${j}]=${item}')
41 assert item == Thing{j + 1}
42 }
43 }
44 println('end bad()')
45 return two_d
46}
47
48fn test_main() {
49 good_two_d := good()
50 assert good_two_d.len == 1, 'good_two_d length not 1'
51 for i, one_d in good_two_d {
52 for j, item in one_d {
53 println('good_two_d[${i}][${j}]=${item}')
54 assert item == Thing{j + 1}
55 }
56 }
57 bad_two_d := bad()
58 assert bad_two_d.len == 1, 'bad_two_d length not 1'
59 for i, one_d in bad_two_d {
60 for j, item in one_d {
61 println('bad_two_d[${i}][${j}]=${item}')
62 assert item == Thing{j + 1}
63 }
64 }
65}
66