blobsets/tests/test_set.nim

73 lines
1.8 KiB
Nim
Raw Normal View History

2018-12-24 21:19:03 +01:00
import std/unittest, std/os, std/parseopt
import ../src/blobsets
suite "Blob set tests":
var
store = newNullStore()
2019-03-16 11:52:24 +01:00
randomCid = blobHash("")
2018-12-24 21:19:03 +01:00
# test "zero blob":
# doAssert(randomCid == zeroChunk)
proc randomize() =
randomCid = blobHash(randomCid.toHex)
2018-12-24 21:19:03 +01:00
proc testPath(s: BlobSet; root: string): BlobSet =
for path in walkDirRec(root):
randomize()
let
blob = randomCid
str = $randomCid
doAssert(str.toBlobid == randomCid)
result = insert(store, s, path, blob, 0)
let found = search(store, result, path)
2018-12-24 21:19:03 +01:00
doAssert(found == randomCid)
test "functional insert":
let
a = newBlobSet()
b = insert(store, a, "foo", randomCid, 0)
c = insert(store, b, "bar", randomCid, 0)
doAssert(contains(store, b, "foo"))
doAssert(contains(store, c, "foo"))
doAssert(contains(store, c, "bar"))
doAssert(not contains(store, a, "foo"))
doAssert(not contains(store, a, "bar"))
doAssert(not contains(store, b, "bar"))
2018-12-24 21:19:03 +01:00
2019-02-15 21:56:21 +01:00
test "apply":
var bs = newBlobSet()
for i in 1..1024:
let
name = $i
blob = blobHash name
bs = insert(store, bs, name, blob, 0)
2019-02-15 21:56:21 +01:00
for i in 1..1024:
let
name = $i
blob = blobHash name
other = search(store, bs, name)
2019-02-15 21:56:21 +01:00
doAssert(other == blob)
test "remove":
var bs = newBlobSet()
for i in 1..1024:
let
name = $i
blob = blobHash name
bs = insert(store, bs, name, blob, 0)
for i in 1..1024:
let name = $i
bs = remove(store, bs, name)
doAssert(not contains(store, bs, name))
2018-12-24 21:19:03 +01:00
test "sets":
var s = newBlobSet()
for kind, key, val in getopt():
if kind == cmdArgument:
s = s.testPath(key)
if s.isEmpty:
s = s.testPath(".")