123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- discard """
- matrix: "--mm:refc; --mm:orc"
- targets: "c js"
- """
- import std/[sequtils,critbits]
- import std/assertions
- template main =
- 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"
- doAssert r.missingOrExcl("foo") == false
- doAssert "foo" notin toSeq(r.items)
- doAssert r.missingOrExcl("foo") == true
- doAssert toSeq(r.items) == @["abc", "definition", "prefix", "xyz"]
- doAssert toSeq(r.itemsWithPrefix("de")) == @["definition"]
- var c = CritBitTree[int]()
- c.inc("a")
- doAssert c["a"] == 1
- c.inc("a", 4)
- doAssert c["a"] == 5
- c.inc("a", -5)
- doAssert c["a"] == 0
- c.inc("b", 2)
- doAssert c["b"] == 2
- c.inc("c", 3)
- doAssert c["c"] == 3
- c.inc("a", 1)
- doAssert c["a"] == 1
- var cf = CritBitTree[float]()
- cf.incl("a", 1.0)
- doAssert cf["a"] == 1.0
- cf.incl("b", 2.0)
- doAssert cf["b"] == 2.0
- cf.incl("c", 3.0)
- doAssert cf["c"] == 3.0
- doAssert cf.len == 3
- cf.excl("c")
- doAssert cf.len == 2
- var cb: CritBitTree[string]
- cb.incl("help", "help")
- for k in cb.keysWithPrefix("helpp"):
- doAssert false, "there is no prefix helpp"
- block: # bug #14339
- var strings: CritBitTree[int]
- discard strings.containsOrIncl("foo", 3)
- doAssert strings["foo"] == 3
- block tcritbitsToString:
- block:
- var t: CritBitTree[int]
- t["a"] = 1
- doAssert $t == """{"a": 1}"""
- block:
- var t: CritBitTree[string]
- t["a"] = "1"
- doAssert $t == """{"a": "1"}"""
- block:
- var t: CritBitTree[char]
- t["a"] = '1'
- doAssert $t == """{"a": '1'}"""
- main()
- static: main()
|