v2 / vlib / arrays / uniq_test.v
96 lines · 86 sloc · 4.27 KB · c7b7d5f50feb290eadac5ec8e7c9d8a786b657d2
Raw
1import arrays
2
3const a = [1, 5, 5, 1, 5, 2, 1, 1, 9, 2]
4
5const s = [1, 1, 1, 1, 2, 2, 5, 5, 5, 9] // a.sorted()
6
7const many_repeats = [1, 1, 1, 1, 2, 2, 5, 5, 5, 9, 1, 1, 9, 5, 5]
8
9const astrings = ['b', 'b', 'a', 'b', 'z', 'a', 'a', 'd']
10
11const sstrings = ['a', 'a', 'a', 'b', 'b', 'b', 'd', 'z'] // astrings.sorted()
12
13fn test_uniq() {
14 assert arrays.uniq([]int{}) == []
15 assert arrays.uniq([1, 1]) == [1]
16 assert arrays.uniq([2, 1]) == [2, 1]
17 assert arrays.uniq(a) == [1, 5, 1, 5, 2, 1, 9, 2]
18 assert arrays.uniq(s) == [1, 2, 5, 9]
19 assert arrays.uniq(astrings) == ['b', 'a', 'b', 'z', 'a', 'd']
20 assert arrays.uniq(sstrings) == ['a', 'b', 'd', 'z']
21 assert arrays.uniq(many_repeats) == [1, 2, 5, 9, 1, 9, 5]
22}
23
24fn test_uniq_only() {
25 assert arrays.uniq_only([]int{}) == []
26 assert arrays.uniq_only([1, 5]) == [1, 5]
27 assert arrays.uniq_only([5, 5]) == []
28 assert arrays.uniq_only([5, 1, 1]) == [5]
29 assert arrays.uniq_only(a) == [1, 1, 5, 2, 9, 2]
30 assert arrays.uniq_only(s) == [9]
31 assert arrays.uniq_only(astrings) == ['a', 'b', 'z', 'd']
32 assert arrays.uniq_only(sstrings) == ['d', 'z']
33 assert arrays.uniq_only(many_repeats) == [9, 9]
34}
35
36fn test_uniq_only_repeated() {
37 assert arrays.uniq_only_repeated([]int{}) == []
38 assert arrays.uniq_only_repeated([1, 5]) == []
39 assert arrays.uniq_only_repeated([5, 5]) == [5]
40 assert arrays.uniq_only_repeated([5, 5, 5]) == [5]
41 assert arrays.uniq_only_repeated([5, 1, 1]) == [1]
42 assert arrays.uniq_only_repeated([1, 1, 5]) == [1]
43 assert arrays.uniq_only_repeated([1, 5, 1]) == []
44 assert arrays.uniq_only_repeated([0, 5, 1, 1]) == [1]
45 assert arrays.uniq_only_repeated([0, 1, 1, 5]) == [1]
46 assert arrays.uniq_only_repeated([0, 1, 5, 1]) == []
47 assert arrays.uniq_only_repeated([5, 1, 1, 0]) == [1]
48 assert arrays.uniq_only_repeated([1, 1, 5, 0]) == [1]
49 assert arrays.uniq_only_repeated([1, 5, 1, 0]) == []
50 assert arrays.uniq_only_repeated([5, 5, 5, 5, 1]) == [5]
51 assert arrays.uniq_only_repeated([1, 5, 5, 5, 5, 1]) == [5]
52 assert arrays.uniq_only_repeated([1, 5, 5, 2, 5, 5, 3]) == [5, 5]
53 assert arrays.uniq_only_repeated([1, 5, 5, 2, 5, 5, 3, 5]) == [5, 5]
54 assert arrays.uniq_only_repeated([1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5]
55 assert arrays.uniq_only_repeated([5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5]
56 assert arrays.uniq_only_repeated([5, 5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5]
57 assert arrays.uniq_only_repeated([5, 5, 5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5]
58 assert arrays.uniq_only_repeated(a) == [5, 1]
59 assert arrays.uniq_only_repeated(s) == [1, 2, 5]
60 assert arrays.uniq_only_repeated(many_repeats) == [1, 2, 5, 1, 5]
61}
62
63fn test_uniq_all_repeated() {
64 assert arrays.uniq_all_repeated([]int{}) == []
65 assert arrays.uniq_all_repeated([1, 5]) == []
66 assert arrays.uniq_all_repeated([5, 5]) == [5, 5]
67 assert arrays.uniq_all_repeated([5, 5, 5]) == [5, 5, 5]
68 assert arrays.uniq_all_repeated([5, 1, 1]) == [1, 1]
69 assert arrays.uniq_all_repeated([1, 1, 5]) == [1, 1]
70 assert arrays.uniq_all_repeated([1, 5, 1]) == []
71 assert arrays.uniq_all_repeated([0, 5, 1, 1]) == [1, 1]
72 assert arrays.uniq_all_repeated([0, 1, 1, 5]) == [1, 1]
73 assert arrays.uniq_all_repeated([0, 1, 5, 1]) == []
74 assert arrays.uniq_all_repeated([5, 1, 1, 0]) == [1, 1]
75 assert arrays.uniq_all_repeated([1, 1, 5, 0]) == [1, 1]
76 assert arrays.uniq_all_repeated([1, 5, 1, 0]) == []
77 assert arrays.uniq_all_repeated([5, 5, 5, 5, 1]) == [5, 5, 5, 5]
78 assert arrays.uniq_all_repeated([1, 5, 5, 5, 5, 1]) == [5, 5, 5, 5]
79 assert arrays.uniq_all_repeated([1, 5, 5, 2, 5, 5, 3]) == [5, 5, 5, 5]
80 assert arrays.uniq_all_repeated([1, 5, 5, 2, 5, 5, 3, 5]) == [5, 5, 5, 5]
81 assert arrays.uniq_all_repeated([1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5, 5, 5]
82 assert arrays.uniq_all_repeated([5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5, 5, 5]
83 assert arrays.uniq_all_repeated([5, 5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5, 5, 5, 5,
84 5]
85 assert arrays.uniq_all_repeated([5, 5, 5, 1, 5, 5, 2, 5, 5, 3, 5, 5]) == [5, 5, 5, 5, 5, 5,
86 5, 5, 5]
87 assert arrays.uniq_all_repeated(a) == [5, 5, 1, 1]
88 assert arrays.uniq_all_repeated(s) == [1, 1, 1, 1, 2, 2, 5, 5, 5]
89 assert arrays.uniq_all_repeated(many_repeats) == [1, 1, 1, 1, 2, 2, 5, 5, 5, 1, 1, 5, 5]
90}
91
92fn test_distinct() {
93 assert arrays.distinct(a) == arrays.distinct(s)
94 assert arrays.distinct(a) == [1, 2, 5, 9]
95 assert arrays.distinct(many_repeats) == [1, 2, 5, 9]
96}
97