summary refs log tree commit diff stats
path: root/tests/stdlib/tcritbits.nim
diff options
context:
space:
mode:
Diffstat (limited to 'tests/stdlib/tcritbits.nim')
-rw-r--r--tests/stdlib/tcritbits.nim61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/stdlib/tcritbits.nim b/tests/stdlib/tcritbits.nim
new file mode 100644
index 000000000..51cbb7bf2
--- /dev/null
+++ b/tests/stdlib/tcritbits.nim
@@ -0,0 +1,61 @@
+import sequtils, critbits
+
+
+var r: CritBitTree[void]
+r.incl "abc"
+r.incl "xyz"
+r.incl "def"
+r.incl "definition"
+r.incl "prefix"
+r.incl "foo"
+
+doAssert r.contains"def"
+
+r.excl "def"
+assert r.missingOrExcl("foo") == false
+assert "foo" notin toSeq(r.items)
+
+assert r.missingOrExcl("foo") == true
+
+assert toSeq(r.items) == @["abc", "definition", "prefix", "xyz"]
+
+assert toSeq(r.itemsWithPrefix("de")) == @["definition"]
+var c = CritBitTree[int]()
+
+c.inc("a")
+assert c["a"] == 1
+
+c.inc("a", 4)
+assert c["a"] == 5
+
+c.inc("a", -5)
+assert c["a"] == 0
+
+c.inc("b", 2)
+assert c["b"] == 2
+
+c.inc("c", 3)
+assert c["c"] == 3
+
+c.inc("a", 1)
+assert c["a"] == 1
+
+var cf = CritBitTree[float]()
+
+cf.incl("a", 1.0)
+assert cf["a"] == 1.0
+
+cf.incl("b", 2.0)
+assert cf["b"] == 2.0
+
+cf.incl("c", 3.0)
+assert cf["c"] == 3.0
+
+assert cf.len == 3
+cf.excl("c")
+assert cf.len == 2
+
+var cb: CritBitTree[string]
+cb.incl("help", "help")
+for k in cb.keysWithPrefix("helpp"):
+  doAssert false, "there is no prefix helpp"