2020-04-12 22:26:42 -06:00
|
|
|
import unittest
|
|
|
|
import chronos
|
2020-04-14 18:02:39 -06:00
|
|
|
import ../libp2p/streams/[lenprefixed, stream]
|
2020-04-12 22:26:42 -06:00
|
|
|
|
|
|
|
suite "LenPrefixed stream":
|
|
|
|
test "encode":
|
|
|
|
proc test(): Future[bool] {.async.} =
|
|
|
|
var lp = LenPrefixed.init()
|
|
|
|
iterator stream(): Future[seq[byte]] {.closure.} =
|
|
|
|
var fut = newFuture[seq[byte]]()
|
|
|
|
fut.complete(cast[seq[byte]](@['a', 'b', 'c', 'd', 'e']))
|
|
|
|
yield fut
|
|
|
|
|
2020-04-13 12:05:56 -06:00
|
|
|
var encode = lp.encoder()
|
|
|
|
var encoded: seq[byte]
|
|
|
|
|
|
|
|
for i in stream.encode():
|
|
|
|
encoded = await i
|
|
|
|
|
2020-04-12 22:26:42 -06:00
|
|
|
check:
|
|
|
|
encoded == cast[seq[byte]](@['\5', 'a', 'b', 'c', 'd', 'e'])
|
|
|
|
result = true
|
|
|
|
|
|
|
|
check:
|
|
|
|
waitFor(test()) == true
|
|
|
|
|
|
|
|
test "decode":
|
|
|
|
proc test(): Future[bool] {.async.} =
|
|
|
|
var lp = LenPrefixed.init()
|
|
|
|
iterator stream(): Future[seq[byte]] {.closure.} =
|
2020-04-12 23:00:36 -06:00
|
|
|
for i in @['\5', 'a', 'b', 'c', 'd', 'e']:
|
|
|
|
var fut = newFuture[seq[byte]]()
|
|
|
|
fut.complete(cast[seq[byte]](@[i]))
|
|
|
|
yield fut
|
|
|
|
|
|
|
|
var decoded: seq[byte]
|
2020-04-13 12:05:56 -06:00
|
|
|
var decode = lp.decoder()
|
|
|
|
|
|
|
|
for i in stream.decode():
|
2020-04-12 23:00:36 -06:00
|
|
|
decoded.add(await i)
|
2020-04-12 22:26:42 -06:00
|
|
|
|
|
|
|
check:
|
|
|
|
decoded == cast[seq[byte]](@['a', 'b', 'c', 'd', 'e'])
|
|
|
|
result = true
|
|
|
|
|
|
|
|
check:
|
|
|
|
waitFor(test()) == true
|
2020-04-12 23:06:14 -06:00
|
|
|
|
|
|
|
test "pipe":
|
|
|
|
proc test(): Future[bool] {.async.} =
|
|
|
|
var lp = LenPrefixed.init()
|
2020-04-13 12:05:56 -06:00
|
|
|
iterator stream(): Future[seq[byte]] {.closure.} =
|
2020-04-12 23:06:14 -06:00
|
|
|
for i in @['a', 'b', 'c', 'd', 'e']:
|
|
|
|
var fut = newFuture[seq[byte]]()
|
|
|
|
fut.complete(cast[seq[byte]](@[i]))
|
|
|
|
yield fut
|
|
|
|
|
|
|
|
var decoded: seq[byte]
|
2020-04-13 12:05:56 -06:00
|
|
|
var decode = lp.decoder()
|
|
|
|
var encode = lp.encoder()
|
|
|
|
|
|
|
|
for i in stream.encode.decode():
|
2020-04-12 23:06:14 -06:00
|
|
|
decoded.add(await i)
|
|
|
|
|
|
|
|
check:
|
|
|
|
decoded == cast[seq[byte]](@['a', 'b', 'c', 'd', 'e'])
|
|
|
|
result = true
|
|
|
|
|
|
|
|
check:
|
|
|
|
waitFor(test()) == true
|