From 3ef9797bf3e31f2339c997b49470e03da8ff173a Mon Sep 17 00:00:00 2001 From: Dmitriy Ryajov Date: Sun, 27 Mar 2022 14:40:27 -0600 Subject: [PATCH] adding more comprehensive tests --- tests/helpers.nim | 113 ++++++++++++++++++++++++++++++++++++++++++ tests/testleopard.nim | 25 +++++++++- 2 files changed, 136 insertions(+), 2 deletions(-) create mode 100644 tests/helpers.nim diff --git a/tests/helpers.nim b/tests/helpers.nim new file mode 100644 index 0000000..df93fa4 --- /dev/null +++ b/tests/helpers.nim @@ -0,0 +1,113 @@ +import std/random + +import pkg/stew/results +import ../leopard + +proc randomCRCPacket*(data: var openArray[byte]) = + if data.len < 16: + data[0] = rand(data.len).byte + for i in 1.. 0: + dropRandomIdx(dataBuf, dataLosses) + + if parityLosses > 0: + dropRandomIdx(parityBuf, parityLosses) + + decoder.decode(dataBuf, parityBuf, recoveredBuf).tryGet() + + for i, d in dataBuf: + if d.len <= 0: + if not checkCRCPacket(recoveredBuf[i]): + return err(("Check failed for packet " & $i).cstring) + finally: + encoder.free() + decoder.free() + + ok() diff --git a/tests/testleopard.nim b/tests/testleopard.nim index 54b9c79..e9f2026 100644 --- a/tests/testleopard.nim +++ b/tests/testleopard.nim @@ -1,7 +1,13 @@ +import std/random +import std/sets + import pkg/unittest2 import pkg/stew/results import ../leopard +import ./helpers + +randomize() suite "Leopard Parametrization": test "Should not allow invalid buffer multiples": @@ -135,8 +141,23 @@ suite "Leopard simple Encode/Decode": parity[0].setLen(0) decoder.decode(data, parity, recovered).tryGet() - check recovered[0] == data1 suite "Leopard Encode/Decode": - discard + test "bufSize = 4096, K = 800, M = 200 - drop data = 200 data": + testPackets(800, 200, 4096, 200, 0).tryGet() + + test "bufSize = 4096, K = 800, M = 200 - drop parity = 200": + testPackets(800, 200, 4096, 0, 200).tryGet() + + test "bufSize = 4096, K = 800, M = 200 - drop data = 100, drop parity = 100": + testPackets(800, 200, 4096, 0, 200).tryGet() + + test "bufSize = 4096, K = 8000, M = 2000 - drop data = 2000": + testPackets(8000, 2000, 4096, 2000, 0).tryGet() + + test "bufSize = 4096, K = 8000, M = 2000 - drop parity = 2000": + testPackets(8000, 2000, 4096, 0, 2000).tryGet() + + test "bufSize = 4096, K = 8000, M = 2000 - drop data = 1000, parity = 1000": + testPackets(8000, 2000, 4096, 1000, 1000).tryGet()