Mercurial > dedupe
diff TestBitDecoder.cpp @ 20:754e12c927b3
Class for decoding binary datarepresentations, eg. Huffman trees.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Wed, 05 Sep 2012 21:54:18 +0200 |
| parents | |
| children | b2c2c2bf2bbd |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TestBitDecoder.cpp Wed Sep 05 21:54:18 2012 +0200 @@ -0,0 +1,38 @@ +#include "BitDecoder.hpp" +#include "TestFramework.hpp" + +#include "InvalidDataException.hpp" +#include <QtCore/QDebug> + +QBitArray bitsFromString(const QString& str) +{ + QBitArray bits(str.size()); + for (int i = 0; i < str.size(); ++i) { + if (str[i] == '1') + bits[i] = true; + else if (str[i] == '0') + bits[i] = false; + else + throw InvalidDataException(); + } + return bits; +} + +BOOST_AUTO_TEST_CASE( TestSimple ) +{ + BitDecoder* up = new BitDecoder("a"); + BitDecoder* down = new BitDecoder("b"); + + BitDecoder* full = BitDecoder::merge(down, up); + + BOOST_REQUIRE(full->data().isNull()); + BOOST_REQUIRE_EQUAL(up->data(), "a"); + BOOST_REQUIRE_EQUAL(down->data(), "b"); + + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("1")), "a"); + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("0")), "b"); + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("1111")), "aaaa"); + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("0000")), "bbbb"); + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("1101")), "aaba"); + BOOST_REQUIRE_EQUAL(full->decode(bitsFromString("1111")), "aaaa"); +}
