1 package set
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestOrderedFromSet(t *testing.T) {
10 set := Set[int]{5: member, 2: member, 3: member, 7: member, 9: member}
11 orderedSet := OrderedFromSet(set)
12
13 expectedOrder := []int{2, 3, 5, 7, 9}
14 expectedSet := &OrderedSet[int]{
15 Set: Set[int]{5: member, 2: member, 3: member, 7: member, 9: member},
16 order: expectedOrder,
17 }
18
19 assert.Equal(t, expectedSet, orderedSet)
20 assert.Equal(t, expectedOrder, orderedSet.ToSlice())
21 }
22
23 func TestOrderedFromSlice(t *testing.T) {
24 slice := []float32{3.5, 2.3, 8.3, 7.01, 9.999}
25 set := OrderedFromSlice(slice)
26
27 expectedOrder := []float32{2.3, 3.5, 7.01, 8.3, 9.999}
28 expectedSet := &OrderedSet[float32]{
29 Set: Set[float32]{2.3: member, 3.5: member, 7.01: member, 8.3: member, 9.999: member},
30 order: expectedOrder,
31 }
32
33 assert.Equal(t, expectedSet, set)
34 assert.Equal(t, expectedOrder, set.ToSlice())
35 }
36
37 func TestOrderedFromMap(t *testing.T) {
38 m := map[string]int{"d": 0, "b": 1, "a": 2, "c": 3}
39 set := OrderedFromMap(m)
40
41 expectedOrder := []string{"a", "b", "c", "d"}
42 expectedSet := &OrderedSet[string]{
43 Set: Set[string]{"d": member, "b": member, "a": member, "c": member},
44 order: expectedOrder,
45 }
46
47 assert.Equal(t, expectedSet, set)
48 assert.Equal(t, expectedOrder, set.ToSlice())
49 }
50
51 func TestOrderedToSet(t *testing.T) {
52 orderedSet := OrderedFromSlice([]int{5, 2, 3, 7, 9})
53 expectedSet := Set[int]{5: member, 2: member, 3: member, 7: member, 9: member}
54 set := orderedSet.ToSet()
55 assert.Equal(t, expectedSet, set)
56 }
57
58 func TestAddToOrderedSet(t *testing.T) {
59 set := OrderedFromSlice([]string{})
60
61 set.Add("c")
62 expectedOrder := []string{"c"}
63 assert.Equal(t, expectedOrder, set.ToSlice())
64
65 set.Add("e", "a")
66 expectedOrder = []string{"a", "c", "e"}
67 assert.Equal(t, expectedOrder, set.ToSlice())
68
69 set.Add("b", "a", "d", "c", "f")
70 expectedOrder = []string{"a", "b", "c", "d", "e", "f"}
71 assert.Equal(t, expectedOrder, set.ToSlice())
72 }
73
74 func TestRemoveFromOrderedSet(t *testing.T) {
75 set := OrderedFromSlice([]int{2, 3, 5, 7, 9})
76
77 set.Remove(2, 7)
78 expectedOrder := []int{3, 5, 9}
79 assert.Equal(t, expectedOrder, set.ToSlice())
80
81 set.Remove(3, 5, 9)
82 expectedOrder = []int{}
83 assert.Equal(t, expectedOrder, set.ToSlice())
84
85 set.Remove(1)
86 expectedOrder = []int{}
87 assert.Equal(t, expectedOrder, set.ToSlice())
88 }
89
View as plain text