aboutsummaryrefslogtreecommitdiff
path: root/tests/functional
diff options
context:
space:
mode:
Diffstat (limited to 'tests/functional')
l---------tests/functional/list-api/main.go1
-rw-r--r--tests/functional/list-api/pds.go61
l---------tests/functional/list-builder-api/main.go1
-rw-r--r--tests/functional/list-builder-api/pds.go53
l---------tests/functional/map-api/main.go1
-rw-r--r--tests/functional/map-api/pds.go88
l---------tests/functional/map-builder-api/main.go1
-rw-r--r--tests/functional/map-builder-api/pds.go44
l---------tests/functional/sortedmap-api/main.go1
-rw-r--r--tests/functional/sortedmap-api/pds.go89
l---------tests/functional/sortedmap-builder-api/main.go1
-rw-r--r--tests/functional/sortedmap-builder-api/pds.go44
12 files changed, 385 insertions, 0 deletions
diff --git a/tests/functional/list-api/main.go b/tests/functional/list-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/list-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/list-api/pds.go b/tests/functional/list-api/pds.go
new file mode 100644
index 0000000..c4290c8
--- /dev/null
+++ b/tests/functional/list-api/pds.go
@@ -0,0 +1,61 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("NewList() - API usage", func() {
+ l := NewList[string]().Append("foo").Append("bar").Append("baz")
+ g.TAssertEqual(l.Get(0), "foo")
+ g.TAssertEqual(l.Get(1), "bar")
+ g.TAssertEqual(l.Get(2), "baz")
+
+ l = l.Prepend("a").Prepend("b").Prepend("c")
+ g.TAssertEqual(l.Get(0), "c")
+ g.TAssertEqual(l.Get(1), "b")
+ g.TAssertEqual(l.Get(2), "a")
+
+ l = l.Set(0, "_")
+ g.TAssertEqual(l.Get(0), "_")
+
+ l = l.Slice(1, 3)
+ g.TAssertEqual(l.Get(0), "b")
+ g.TAssertEqual(l.Get(1), "a")
+ g.TAssertEqual(l.Len(), 2)
+ })
+
+ g.Testing("NewList().Iterator() - API usage", func() {
+ l := NewList[string]()
+ l = l.Append("foo")
+ l = l.Append("bar")
+ l = l.Append("baz")
+
+ indexes := []int{}
+ values := []string{}
+ itr := l.Iterator()
+ for !itr.Done() {
+ i, v := itr.Next()
+ indexes = append(indexes, i)
+ values = append(values, v)
+ }
+ itr.Last()
+ for !itr.Done() {
+ i, v := itr.Prev()
+ indexes = append(indexes, i)
+ values = append(values, v)
+ }
+
+ g.TAssertEqual(indexes, []int{0, 1, 2, 2, 1, 0})
+ g.TAssertEqual(values, []string{
+ "foo",
+ "bar",
+ "baz",
+ "baz",
+ "bar",
+ "foo",
+ })
+ })
+}
diff --git a/tests/functional/list-builder-api/main.go b/tests/functional/list-builder-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/list-builder-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/list-builder-api/pds.go b/tests/functional/list-builder-api/pds.go
new file mode 100644
index 0000000..c7b632c
--- /dev/null
+++ b/tests/functional/list-builder-api/pds.go
@@ -0,0 +1,53 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("API usage", func() {
+ b1 := NewListBuilder[string]()
+ b1.Append("foo")
+ b1.Append("bar")
+ b1.Append("baz")
+
+ l1 := b1.List()
+ g.TAssertEqual(l1.Get(0), "foo")
+ g.TAssertEqual(l1.Get(1), "bar")
+ g.TAssertEqual(l1.Get(2), "baz")
+
+
+ b2 := NewListBuilder[string]()
+ b2.Prepend("foo")
+ b2.Prepend("bar")
+ b2.Prepend("baz")
+
+ l2 := b2.List()
+ g.TAssertEqual(l2.Get(0), "baz")
+ g.TAssertEqual(l2.Get(1), "bar")
+ g.TAssertEqual(l2.Get(2), "foo")
+
+
+ b3 := NewListBuilder[string]()
+ b3.Append("foo")
+ b3.Append("bar")
+ b3.Set(1, "___")
+ l3 := b3.List()
+ g.TAssertEqual(l3.Get(0), "foo")
+ g.TAssertEqual(l3.Get(1), "___")
+
+
+ b4 := NewListBuilder[string]()
+ b4.Append("foo")
+ b4.Append("bar")
+ b4.Append("baz")
+ b4.Slice(1, 3)
+
+ l4 := b4.List()
+ g.TAssertEqual(l4.Len(), 2)
+ g.TAssertEqual(l4.Get(0), "bar")
+ g.TAssertEqual(l4.Get(1), "baz")
+ })
+}
diff --git a/tests/functional/map-api/main.go b/tests/functional/map-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/map-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/map-api/pds.go b/tests/functional/map-api/pds.go
new file mode 100644
index 0000000..2fc0a8c
--- /dev/null
+++ b/tests/functional/map-api/pds.go
@@ -0,0 +1,88 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("NewMap[]().Set()", func() {
+ m := NewMap[string, any](nil)
+ m = m.Set("foo", "bar")
+ m = m.Set("baz", 100)
+
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, 100)
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("bat")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewMap[]().Delete()", func() {
+ m := NewMap[string, any](nil)
+ m = m.Set("foo", "bar")
+ m = m.Set("baz", 100)
+ m = m.Delete("baz")
+
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewMap[]().Iterator()", func() {
+ m := NewMap[string, int](nil)
+ m = m.Set("apple", 100)
+ m = m.Set("grape", 200)
+ m = m.Set("kiwi", 300)
+ m = m.Set("mango", 400)
+ m = m.Set("orange", 500)
+ m = m.Set("peach", 600)
+ m = m.Set("pear", 700)
+ m = m.Set("pineapple", 800)
+ m = m.Set("strawberry", 900)
+
+ keys := []string{}
+ values := []int{}
+
+ itr := m.Iterator()
+ for !itr.Done() {
+ k, v, _ := itr.Next()
+ keys = append(keys, k)
+ values = append(values, v)
+ }
+
+ g.TAssertEqual(keys, []string{
+ "mango",
+ "pear",
+ "pineapple",
+ "grape",
+ "orange",
+ "strawberry",
+ "kiwi",
+ "peach",
+ "apple",
+ })
+ g.TAssertEqual(values, []int{
+ 400,
+ 700,
+ 800,
+ 200,
+ 500,
+ 900,
+ 300,
+ 600,
+ 100,
+ })
+ })
+}
diff --git a/tests/functional/map-builder-api/main.go b/tests/functional/map-builder-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/map-builder-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/map-builder-api/pds.go b/tests/functional/map-builder-api/pds.go
new file mode 100644
index 0000000..18bd873
--- /dev/null
+++ b/tests/functional/map-builder-api/pds.go
@@ -0,0 +1,44 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("NewMapBuilder[]().Set()", func() {
+ b := NewMapBuilder[string, any](nil)
+ b.Set("foo", "bar")
+ b.Set("baz", 100)
+
+ m := b.Map()
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, 100)
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("bat")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewMapBuilder[]().Delete()", func() {
+ b := NewMapBuilder[string, any](nil)
+ b.Set("foo", "bar")
+ b.Set("baz", 100)
+ b.Delete("baz")
+
+ m := b.Map()
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+}
diff --git a/tests/functional/sortedmap-api/main.go b/tests/functional/sortedmap-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/sortedmap-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/sortedmap-api/pds.go b/tests/functional/sortedmap-api/pds.go
new file mode 100644
index 0000000..1a182c1
--- /dev/null
+++ b/tests/functional/sortedmap-api/pds.go
@@ -0,0 +1,89 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("NewSortedMap[string, any]().Set()", func() {
+ m := NewSortedMap[string, any](nil)
+ m = m.Set("foo", "bar")
+ m = m.Set("baz", 100)
+
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, 100)
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("bat") // does not exist
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewSortedMap[string, any]().Delete()", func() {
+ m := NewSortedMap[string, any](nil)
+ m = m.Set("foo", "bar")
+ m = m.Set("baz", 100)
+ m = m.Delete("baz")
+
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewSortedMap[string, any]().Iterator()", func() {
+ m := NewSortedMap[string, int](nil)
+ m = m.Set("strawberry", 900)
+ m = m.Set("kiwi", 300)
+ m = m.Set("apple", 100)
+ m = m.Set("pear", 700)
+ m = m.Set("pineapple", 800)
+ m = m.Set("peach", 600)
+ m = m.Set("orange", 500)
+ m = m.Set("grape", 200)
+ m = m.Set("mango", 400)
+
+ keys := []string{}
+ values := []int{}
+
+ itr := m.Iterator()
+ for !itr.Done() {
+ k, v, _ := itr.Next()
+ keys = append(keys, k)
+ values = append(values, v)
+ }
+
+ g.TAssertEqual(keys, []string{
+ "apple",
+ "grape",
+ "kiwi",
+ "mango",
+ "orange",
+ "peach",
+ "pear",
+ "pineapple",
+ "strawberry",
+ })
+
+ g.TAssertEqual(values, []int{
+ 100,
+ 200,
+ 300,
+ 400,
+ 500,
+ 600,
+ 700,
+ 800,
+ 900,
+ })
+ })
+}
diff --git a/tests/functional/sortedmap-builder-api/main.go b/tests/functional/sortedmap-builder-api/main.go
new file mode 120000
index 0000000..f67563d
--- /dev/null
+++ b/tests/functional/sortedmap-builder-api/main.go
@@ -0,0 +1 @@
+../../main.go \ No newline at end of file
diff --git a/tests/functional/sortedmap-builder-api/pds.go b/tests/functional/sortedmap-builder-api/pds.go
new file mode 100644
index 0000000..e40948f
--- /dev/null
+++ b/tests/functional/sortedmap-builder-api/pds.go
@@ -0,0 +1,44 @@
+package pds
+
+import (
+ g "gobang"
+)
+
+
+
+func MainTest() {
+ g.Testing("NewSortedMapBuilder[]().Set()", func() {
+ b := NewSortedMapBuilder[string, any](nil)
+ b.Set("foo", "bar")
+ b.Set("baz", 100)
+
+ m := b.Map()
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, 100)
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("bat")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+
+ g.Testing("NewSortedMapBuilder[]().Delete()", func() {
+ b := NewSortedMapBuilder[string, any](nil)
+ b.Set("foo", "bar")
+ b.Set("baz", 100)
+ b.Delete("baz")
+
+ m := b.Map()
+ v, ok := m.Get("foo")
+ g.TAssertEqual(v, "bar")
+ g.TAssertEqual(ok, true)
+
+ v, ok = m.Get("baz")
+ g.TAssertEqual(v, nil)
+ g.TAssertEqual(ok, false)
+ })
+}