...
1 package immutable
2
3 import (
4 "testing"
5 )
6
7 func TestSetsPut(t *testing.T) {
8 s := NewSet[string](nil)
9 s2 := s.Add("1").Add("1")
10 s2.Add("2")
11 if s.Len() != 0 {
12 t.Fatalf("Unexpected mutation of set")
13 }
14 if s.Has("1") {
15 t.Fatalf("Unexpected set element")
16 }
17 if s2.Len() != 1 {
18 t.Fatalf("Unexpected non-mutation of set")
19 }
20 if !s2.Has("1") {
21 t.Fatalf("Set element missing")
22 }
23 itr := s2.Iterator()
24 counter := 0
25 for !itr.Done() {
26 i, v := itr.Next()
27 t.Log(i, v)
28 counter++
29 }
30 if counter != 1 {
31 t.Fatalf("iterator wrong length")
32 }
33 }
34
35 func TestSetsDelete(t *testing.T) {
36 s := NewSet[string](nil)
37 s2 := s.Add("1")
38 s3 := s.Delete("1")
39 if s2.Len() != 1 {
40 t.Fatalf("Unexpected non-mutation of set")
41 }
42 if !s2.Has("1") {
43 t.Fatalf("Set element missing")
44 }
45 if s3.Len() != 0 {
46 t.Fatalf("Unexpected set length after delete")
47 }
48 if s3.Has("1") {
49 t.Fatalf("Unexpected set element after delete")
50 }
51 }
52
53 func TestSortedSetsPut(t *testing.T) {
54 s := NewSortedSet[string](nil)
55 s2 := s.Add("1").Add("1").Add("0")
56 if s.Len() != 0 {
57 t.Fatalf("Unexpected mutation of set")
58 }
59 if s.Has("1") {
60 t.Fatalf("Unexpected set element")
61 }
62 if s2.Len() != 2 {
63 t.Fatalf("Unexpected non-mutation of set")
64 }
65 if !s2.Has("1") {
66 t.Fatalf("Set element missing")
67 }
68
69 itr := s2.Iterator()
70 counter := 0
71 for !itr.Done() {
72 i, v := itr.Next()
73 t.Log(i, v)
74 if counter == 0 && i != "0" {
75 t.Fatalf("sort did not work for first el")
76 }
77 if counter == 1 && i != "1" {
78 t.Fatalf("sort did not work for second el")
79 }
80 counter++
81 }
82 if counter != 2 {
83 t.Fatalf("iterator wrong length")
84 }
85 }
86
87 func TestSortedSetsDelete(t *testing.T) {
88 s := NewSortedSet[string](nil)
89 s2 := s.Add("1")
90 s3 := s.Delete("1")
91 if s2.Len() != 1 {
92 t.Fatalf("Unexpected non-mutation of set")
93 }
94 if !s2.Has("1") {
95 t.Fatalf("Set element missing")
96 }
97 if s3.Len() != 0 {
98 t.Fatalf("Unexpected set length after delete")
99 }
100 if s3.Has("1") {
101 t.Fatalf("Unexpected set element after delete")
102 }
103 }
104
View as plain text