Add absolutely minimal implementation of chunking
This commit is contained in:
parent
2471423197
commit
5f5153820f
|
@ -0,0 +1,10 @@
|
|||
import ./merkledag
|
||||
|
||||
export merkledag
|
||||
|
||||
proc createChunks*(file: File): MerkleDag =
|
||||
let contents = file.readAll()
|
||||
MerkleDag(data: cast[seq[byte]](contents))
|
||||
|
||||
proc assembleChunks*(dag: MerkleDag, output: File) =
|
||||
output.write(cast[string](dag.data))
|
|
@ -0,0 +1,3 @@
|
|||
type
|
||||
MerkleDag* = object
|
||||
data*: seq[byte]
|
|
@ -0,0 +1,31 @@
|
|||
import std/unittest
|
||||
import std/os
|
||||
import pkg/dagger/chunking
|
||||
|
||||
suite "chunking":
|
||||
|
||||
var input, output: File
|
||||
|
||||
setup:
|
||||
input = open("tests/input.txt", fmReadWrite)
|
||||
output = open("tests/output.txt", fmReadWrite)
|
||||
input.write("foo")
|
||||
input.setFilePos(0)
|
||||
|
||||
teardown:
|
||||
input.close()
|
||||
output.close()
|
||||
removeFile("tests/input.txt")
|
||||
removeFile("tests/output.txt")
|
||||
|
||||
test "creates a Merkle DAG from a file":
|
||||
check createChunks(input) != MerkleDag.default
|
||||
|
||||
test "creates a file from a Merkle DAG":
|
||||
let dag = createChunks(input)
|
||||
assembleChunks(dag, output)
|
||||
|
||||
input.setFilePos(0)
|
||||
output.setFilePos(0)
|
||||
check output.readAll() == input.readAll()
|
||||
|
Loading…
Reference in New Issue