aboutsummaryrefslogtreecommitdiff
path: root/sets_test.go
diff options
context:
space:
mode:
authorAm Laher <amir.laher@tixtrack.com>2022-12-24 22:23:14 +1300
committerAm Laher <amir.laher@tixtrack.com>2022-12-24 22:23:14 +1300
commit6d484e5ae1d142dda3acc24f1d29bd81cb1aa2e1 (patch)
tree7cc52e761bbec9c5091e4a15fe14c447bc61a4b8 /sets_test.go
parentMerge pull request #30 from laher/master (diff)
downloadpds-6d484e5ae1d142dda3acc24f1d29bd81cb1aa2e1.tar.gz
pds-6d484e5ae1d142dda3acc24f1d29bd81cb1aa2e1.tar.xz
Set + SortedSet with test
Diffstat (limited to 'sets_test.go')
-rw-r--r--sets_test.go102
1 files changed, 102 insertions, 0 deletions
diff --git a/sets_test.go b/sets_test.go
new file mode 100644
index 0000000..d2e7f32
--- /dev/null
+++ b/sets_test.go
@@ -0,0 +1,102 @@
+package immutable
+
+import (
+ "testing"
+)
+
+func TestSetsPut(t *testing.T) {
+ s := NewSet[string](nil)
+ s2 := s.Set("1").Set("1")
+ if s.Len() != 0 {
+ t.Fatalf("Unexpected mutation of set")
+ }
+ if s.Has("1") {
+ t.Fatalf("Unexpected set element")
+ }
+ if s2.Len() != 1 {
+ t.Fatalf("Unexpected non-mutation of set")
+ }
+ if !s2.Has("1") {
+ t.Fatalf("Set element missing")
+ }
+ itr := s2.Iterator()
+ counter := 0
+ for !itr.Done() {
+ i, v := itr.Next()
+ t.Log(i, v)
+ counter++
+ }
+ if counter != 1 {
+ t.Fatalf("iterator wrong length")
+ }
+}
+
+func TestSetsDelete(t *testing.T) {
+ s := NewSet[string](nil)
+ s2 := s.Set("1")
+ s3 := s.Delete("1")
+ if s2.Len() != 1 {
+ t.Fatalf("Unexpected non-mutation of set")
+ }
+ if !s2.Has("1") {
+ t.Fatalf("Set element missing")
+ }
+ if s3.Len() != 0 {
+ t.Fatalf("Unexpected set length after delete")
+ }
+ if s3.Has("1") {
+ t.Fatalf("Unexpected set element after delete")
+ }
+}
+
+func TestSortedSetsPut(t *testing.T) {
+ s := NewSortedSet[string](nil)
+ s2 := s.Put("1").Put("1").Put("0")
+ if s.Len() != 0 {
+ t.Fatalf("Unexpected mutation of set")
+ }
+ if s.Has("1") {
+ t.Fatalf("Unexpected set element")
+ }
+ if s2.Len() != 2 {
+ t.Fatalf("Unexpected non-mutation of set")
+ }
+ if !s2.Has("1") {
+ t.Fatalf("Set element missing")
+ }
+
+ itr := s2.Iterator()
+ counter := 0
+ for !itr.Done() {
+ i, v := itr.Next()
+ t.Log(i, v)
+ if counter == 0 && i != "0" {
+ t.Fatalf("sort did not work for first el")
+ }
+ if counter == 1 && i != "1" {
+ t.Fatalf("sort did not work for second el")
+ }
+ counter++
+ }
+ if counter != 2 {
+ t.Fatalf("iterator wrong length")
+ }
+}
+
+func TestSortedSetsDelete(t *testing.T) {
+ s := NewSortedSet[string](nil)
+ s2 := s.Put("1")
+ s3 := s.Delete("1")
+ if s2.Len() != 1 {
+ t.Fatalf("Unexpected non-mutation of set")
+ }
+ if !s2.Has("1") {
+ t.Fatalf("Set element missing")
+ }
+ if s3.Len() != 0 {
+ t.Fatalf("Unexpected set length after delete")
+ }
+ if s3.Has("1") {
+ t.Fatalf("Unexpected set element after delete")
+ }
+}