49 lines
1.2 KiB
Nim
49 lines
1.2 KiB
Nim
import ../src/ndspkg/types/hashtable
|
|
import ../src/ndspkg/types/ndstring
|
|
|
|
proc equal*(l, r: string): bool =
|
|
l == r
|
|
|
|
proc testHashtables* =
|
|
var tbl = newTable[string, int]()
|
|
|
|
var val: int
|
|
|
|
assert tbl.tableSet("hello", 1) == false
|
|
assert tbl.tableGet("hello", val) == true
|
|
assert val == 1
|
|
assert tbl.tableSet("hello", 4) == true
|
|
assert tbl.tableGet("hello", val) == true
|
|
assert val == 4
|
|
assert tbl.tableGet("hellw", val) == false
|
|
assert val == 4
|
|
assert tbl.tableDelete("hello") == true
|
|
val = 0
|
|
assert tbl.tableGet("hello", val) == false
|
|
assert val == 0
|
|
|
|
for i in countup(0, 10000):
|
|
assert tbl.tableSet($i, i) == false
|
|
assert tbl.tableget($i, val) == true
|
|
assert val == i
|
|
assert tbl.tableSet($i, i * 2) == true
|
|
assert tbl.tableget($i, val) == true
|
|
assert val == i * 2
|
|
assert tbl.tableSet($i, i * 4) == true
|
|
assert tbl.tableget($i, val) == true
|
|
assert val == i * 4
|
|
if i mod 5 == 0:
|
|
assert tbl.tableDelete($i) == true
|
|
assert tbl.tableDelete($i) == false
|
|
|
|
for i in countup(0, 10000):
|
|
if i mod 5 == 0:
|
|
assert tbl.tableGet($i, val) == false
|
|
else:
|
|
assert tbl.tableGet($i, val) == true
|
|
assert val == i * 4
|
|
|
|
tbl.free()
|
|
|
|
echo "Hashtable test finished"
|