v2 / vlib / v / tests / builtin_arrays / array_equality_test.v
93 lines · 86 sloc · 2.45 KB · 6488041a749df9762348d019c4223908c476f2e2
Raw
1struct Tester {
2 b bool
3 i int
4}
5
6enum Color {
7 red
8 green
9 blue
10}
11
12fn test_array_equality() {
13 strs := ['a', 'b', 'c']
14 assert strs == ['a', 'b', 'c']
15 assert strs != ['a', 'c', 'b']
16 assert strs != ['b', 'c', 'a']
17 assert strs != ['b', 'a', 'c']
18 assert strs != ['c', 'b', 'a']
19 assert strs != ['c', 'a', 'b']
20 bools := [true, true, false]
21 assert bools == [true, true, false]
22 assert bools != [true, false, false]
23 assert bools != [false, true, true]
24 assert bools != [false, false, true]
25 assert bools != [false, false, false]
26 assert bools != [false, true, false]
27 ints := [1, 2, 3]
28 assert ints == [1, 2, 3]
29 assert ints != [1, 3, 2]
30 assert ints != [2, 3, 1]
31 assert ints != [2, 1, 3]
32 assert ints != [3, 2, 1]
33 assert ints != [3, 1, 2]
34 a := Tester{true, 100}
35 b := Tester{false, 200}
36 testers := [a, b]
37 assert testers == [a, b]
38 assert testers != [a, a]
39 assert testers != [b, b]
40 assert testers != [b, a]
41 colors := [Color.red, Color.green, Color.blue]
42 assert colors == [Color.red, Color.green, Color.blue]
43 assert colors != [Color.red, Color.blue, Color.green]
44 assert colors != [Color.green, Color.blue, Color.red]
45 assert colors != [Color.green, Color.red, Color.blue]
46 assert colors != [Color.blue, Color.green, Color.red]
47 assert colors != [Color.blue, Color.red, Color.green]
48}
49
50fn test_nested_array_equality() {
51 a1 := [[1]]
52 assert a1 == [[1]]
53 assert a1 != [[2]]
54 a2 := [[[[1]]]]
55 assert a2 == [[[[1]]]]
56 assert a2 != [[[[2]]]]
57 a3 := [[[1, 2, 3]]]
58 assert a3 == [[[1, 2, 3]]]
59 assert a3 != [[[1, 0, 3]]]
60 a4 := [[1.1], [2.2]]
61 assert a4 == [[1.1], [2.2]]
62 assert a4 != [[2.1], [3.2]]
63 a5 := [[[[1, 2], [2, 3], [3, 4]]]]
64 assert a5 == [[[[1, 2], [2, 3], [3, 4]]]]
65 assert a5 != [[[[2, 2], [2, 4], [3, 4]]]]
66 a6 := [[['aa', 'bb'], ['cc', 'dd']]]
67 assert a6 == [[['aa', 'bb'], ['cc', 'dd']]]
68 assert a6 != [[['a', 'b'], ['cc', 'dd']]]
69 a7 := [[[true], [false]]]
70 assert a7 == [[[true], [false]]]
71 assert a7 != [[[false], [true]]]
72 a8 := [[[[`a`, `b`], [`c`, `d`]]]]
73 assert a8 == [[[[`a`, `b`], [`c`, `d`]]]]
74 assert a8 != [[[[`c`, `a`], [`e`, `d`]]]]
75 a9 := [[[u16(22), 11]]]
76 assert a9 == [[[u16(22), 11]]]
77 assert a9 != [[[u16(20), 10]]]
78}
79
80type Literal = string
81
82type Literals = []Literal
83
84fn (l1 Literal) concat(l2 Literal) Literals {
85 return Literals([l1, l2])
86}
87
88fn test_array_of_alias_equality() {
89 mut literals := Literals([]Literal{})
90 literals = Literal('hello').concat(Literal('World'))
91 println(literals)
92 assert literals == Literals([Literal('hello'), Literal('World')])
93}
94