about summary refs log tree commit diff
path: root/pkg/libs/rangemap/rangemap_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/libs/rangemap/rangemap_test.go')
-rw-r--r--pkg/libs/rangemap/rangemap_test.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/pkg/libs/rangemap/rangemap_test.go b/pkg/libs/rangemap/rangemap_test.go
new file mode 100644
index 0000000..b120efa
--- /dev/null
+++ b/pkg/libs/rangemap/rangemap_test.go
@@ -0,0 +1,71 @@
+package rangemap_test
+
+import (
+	"jinx/pkg/libs/rangemap"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestAppend(t *testing.T) {
+	rm := rangemap.New[string]()
+
+	assert.True(t, rm.AppendToLast(0, "a"))
+	assert.True(t, rm.AppendToLast(1, "b"))
+	assert.True(t, rm.AppendToLast(4, "c"))
+}
+
+func TestAppendAndGet(t *testing.T) {
+	rm := rangemap.New[string]()
+
+	assert.True(t, rm.AppendToLast(0, "a"))
+	assert.True(t, rm.AppendToLast(1, "b"))
+	assert.True(t, rm.AppendToLast(4, "c"))
+
+	a, ok := rm.Get(0)
+	assert.True(t, ok)
+	assert.Equal(t, "a", *a)
+
+	b, ok := rm.Get(1)
+	assert.True(t, ok)
+	assert.Equal(t, "b", *b)
+
+	cfrom, ok := rm.Get(2)
+	assert.True(t, ok)
+	assert.Equal(t, "c", *cfrom)
+
+	cmid, ok := rm.Get(3)
+	assert.True(t, ok)
+	assert.Equal(t, "c", *cmid)
+
+	cto, ok := rm.Get(4)
+	assert.True(t, ok)
+	assert.Equal(t, "c", *cto)
+}
+
+func TestWrongAppend(t *testing.T) {
+	rm := rangemap.New[string]()
+
+	assert.True(t, rm.AppendToLast(0, "a"))
+	assert.False(t, rm.AppendToLast(0, "b"))
+}
+
+func TestUnknownRange(t *testing.T) {
+	rm := rangemap.New[string]()
+
+	assert.True(t, rm.AppendToLast(6, "a"))
+
+	a, ok := rm.Get(6)
+	assert.True(t, ok)
+	assert.Equal(t, "a", *a)
+
+	b, ok := rm.Get(7)
+	assert.False(t, ok)
+	assert.Nil(t, b)
+}
+
+func TestNegativeAppend(t *testing.T) {
+	rm := rangemap.New[string]()
+
+	assert.False(t, rm.AppendToLast(-1, "a"))
+}