43 lines
1.5 KiB
Nim
43 lines
1.5 KiB
Nim
|
import std/unittest
|
||
|
|
||
|
import pkg/questionable/results
|
||
|
import pkg/stew/byteutils
|
||
|
|
||
|
import pkg/codex/merkletree
|
||
|
import ../helpers
|
||
|
|
||
|
checksuite "merkletree - coders":
|
||
|
const data =
|
||
|
[
|
||
|
"0123456789012345678901234567890123456789".toBytes,
|
||
|
"1234567890123456789012345678901234567890".toBytes,
|
||
|
"2345678901234567890123456789012345678901".toBytes,
|
||
|
"3456789012345678901234567890123456789012".toBytes,
|
||
|
"4567890123456789012345678901234567890123".toBytes,
|
||
|
"5678901234567890123456789012345678901234".toBytes,
|
||
|
"6789012345678901234567890123456789012345".toBytes,
|
||
|
"7890123456789012345678901234567890123456".toBytes,
|
||
|
"8901234567890123456789012345678901234567".toBytes,
|
||
|
"9012345678901234567890123456789012345678".toBytes,
|
||
|
]
|
||
|
|
||
|
test "encoding and decoding a tree yields the same tree":
|
||
|
var builder = MerkleTreeBuilder.init(multiCodec("sha2-256")).tryGet()
|
||
|
builder.addDataBlock(data[0]).tryGet()
|
||
|
builder.addDataBlock(data[1]).tryGet()
|
||
|
builder.addDataBlock(data[2]).tryGet()
|
||
|
builder.addDataBlock(data[3]).tryGet()
|
||
|
builder.addDataBlock(data[4]).tryGet()
|
||
|
builder.addDataBlock(data[5]).tryGet()
|
||
|
builder.addDataBlock(data[6]).tryGet()
|
||
|
builder.addDataBlock(data[7]).tryGet()
|
||
|
builder.addDataBlock(data[8]).tryGet()
|
||
|
builder.addDataBlock(data[9]).tryGet()
|
||
|
|
||
|
let tree = builder.build().tryGet()
|
||
|
let encodedBytes = tree.encode()
|
||
|
let decodedTree = MerkleTree.decode(encodedBytes).tryGet()
|
||
|
|
||
|
check:
|
||
|
tree == decodedTree
|