47 lines
1.2 KiB
Nim
47 lines
1.2 KiB
Nim
|
import std/unittest, std/os, std/parseopt
|
||
|
|
||
|
import ../src/blobsets
|
||
|
|
||
|
suite "Blob set tests":
|
||
|
|
||
|
var
|
||
|
randomCid = dagHash(newString(maxChunkSize))
|
||
|
|
||
|
# test "zero blob":
|
||
|
# doAssert(randomCid == zeroChunk)
|
||
|
|
||
|
proc randomize() =
|
||
|
randomCid = dagHash(randomCid.data.addr, randomCid.data.len)
|
||
|
|
||
|
proc testPath(s: BlobSet; root: string): BlobSet =
|
||
|
for path in walkDirRec(root):
|
||
|
randomize()
|
||
|
let
|
||
|
blob = randomCid
|
||
|
str = $randomCid
|
||
|
doAssert(str.toBlobid == randomCid)
|
||
|
result = insert(s, path, blob, 0)
|
||
|
let found = result.search(path)
|
||
|
doAssert(found == randomCid)
|
||
|
|
||
|
test "functional insert":
|
||
|
let
|
||
|
a = newBlobSet()
|
||
|
b = insert(a, "foo", randomCid, 0)
|
||
|
c = insert(b, "bar", randomCid, 0)
|
||
|
doAssert(contains(b, "foo"))
|
||
|
doAssert(contains(c, "foo"))
|
||
|
doAssert(contains(c, "bar"))
|
||
|
doAssert(not contains(a, "foo"))
|
||
|
doAssert(not contains(a, "bar"))
|
||
|
doAssert(not contains(b, "bar"))
|
||
|
|
||
|
test "sets":
|
||
|
var s = newBlobSet()
|
||
|
for kind, key, val in getopt():
|
||
|
if kind == cmdArgument:
|
||
|
s = s.testPath(key)
|
||
|
if s.isEmpty:
|
||
|
s = s.testPath(".")
|
||
|
echo s.leafCount, " leaves in ", s.nodeCount, " nodes"
|