nim-libp2p/tests/testlenprefixed.nim

71 lines
1.8 KiB
Nim
Raw Normal View History

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