| 1 | struct Tester { |
| 2 | b bool |
| 3 | i int |
| 4 | } |
| 5 | |
| 6 | enum Color { |
| 7 | red |
| 8 | green |
| 9 | blue |
| 10 | } |
| 11 | |
| 12 | fn 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 | |
| 50 | fn 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 | |
| 80 | type Literal = string |
| 81 | |
| 82 | type Literals = []Literal |
| 83 | |
| 84 | fn (l1 Literal) concat(l2 Literal) Literals { |
| 85 | return Literals([l1, l2]) |
| 86 | } |
| 87 | |
| 88 | fn 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 | |