From c34e84d7f3a1cb9aa85008645ff71a19d60671f8 Mon Sep 17 00:00:00 2001 From: pacien Date: Mon, 3 Dec 2018 22:21:36 +0100 Subject: add lzss block test --- tests/blocks/tlzssblock.nim | 48 +++++++++++++++++++++++++++++++++++++++++++++ tests/blocks/trawblock.nim | 2 +- tests/tests.nim | 2 +- 3 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 tests/blocks/tlzssblock.nim diff --git a/tests/blocks/tlzssblock.nim b/tests/blocks/tlzssblock.nim new file mode 100644 index 0000000..3cf6d57 --- /dev/null +++ b/tests/blocks/tlzssblock.nim @@ -0,0 +1,48 @@ +# gzip-like LZSS compressor +# Copyright (C) 2018 Pacien TRAN-GIRARD +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . + +import unittest, streams +import bitio/bitreader, bitio/bitwriter, blocks/lzssblock + +suite "lzssblock": + test "identity": + let value = 0xFEDC_BA98_7654_3210'u64 + let rawStream = newStringStream() + defer: rawStream.close() + rawStream.write(value) + rawStream.setPosition(0) + let rawBitReader = rawStream.bitReader() + let rawBlock = lzssblock.readRaw(rawBitReader) + + let serialisedStream = newStringStream() + defer: serialisedStream.close() + let serialisedBitWriter = serialisedStream.bitWriter() + rawBlock.writeSerialisedTo(serialisedBitWriter) + serialisedBitWriter.flush() + + serialisedStream.setPosition(0) + let serialisedBitReader = serialisedStream.bitReader() + let lzssBlock = lzssblock.readSerialised(serialisedBitReader) + + let outputStream = newStringStream() + defer: outputStream.close() + let outputBitWriter = outputStream.bitWriter() + rawBlock.writeRawTo(outputBitWriter) + outputBitWriter.flush() + + outputStream.setPosition(0) + check outputStream.readUint64 == value + check outputStream.atEnd() diff --git a/tests/blocks/trawblock.nim b/tests/blocks/trawblock.nim index 2426899..550f772 100644 --- a/tests/blocks/trawblock.nim +++ b/tests/blocks/trawblock.nim @@ -44,7 +44,7 @@ suite "rawblock": serialisedStream.write(0xFEDC_BA98_7654_3210'u64) serialisedStream.setPosition(0) let serialisedBitReader = serialisedStream.bitReader() - let rawBlock = rawBlock.readSerialised(serialisedBitReader) + let rawBlock = rawblock.readSerialised(serialisedBitReader) let outputStream = newStringStream() defer: outputStream.close() diff --git a/tests/tests.nim b/tests/tests.nim index 23b6e1c..7d09347 100644 --- a/tests/tests.nim +++ b/tests/tests.nim @@ -36,7 +36,7 @@ import lzsshuffman/tlzsshuffmandecoder, blocks/trawblock, - # TODO: add lzssblock test + blocks/tlzssblock, blocks/streamblock, gziplike/tgziplike -- cgit v1.2.3