view TestFastBitDecoder.cpp @ 115:404795616b1e default tip

Added a lot of common files to ignore
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Sat, 25 Mar 2017 17:43:57 +0100
parents f9fa7ea71d37
children
line wrap: on
line source

#include "FastBitDecoder.hpp"
#include "TestFramework.hpp"

#include "BitDecoder.hpp"


BOOST_AUTO_TEST_CASE( TestSimple )
{
  BitDecoder* up = new BitDecoder("a");
  BitDecoder* down = new BitDecoder("b");

  std::auto_ptr<BitDecoder> full(BitDecoder::merge(down, up));

  BOOST_REQUIRE(full->data().isNull());
  BOOST_REQUIRE_EQUAL(up->data(), "a");
  BOOST_REQUIRE_EQUAL(down->data(), "b");

  FastBitDecoder fast(full->createEncoder());

  BOOST_REQUIRE_EQUAL(fast.decode("1"), "a");
  BOOST_REQUIRE_EQUAL(fast.decode("0"), "b");
  BOOST_REQUIRE_EQUAL(fast.decode("1111"), "aaaa");
  BOOST_REQUIRE_EQUAL(fast.decode("0000"), "bbbb");
  BOOST_REQUIRE_EQUAL(fast.decode("1101"), "aaba");
  BOOST_REQUIRE_EQUAL(fast.decode("1111"), "aaaa");

}

BOOST_AUTO_TEST_CASE( TestLong )
{
  BitDecoder* up = new BitDecoder("b");
  BitDecoder* down = new BitDecoder("a");
  for (int i = 0; i < 12; ++i) {
    down = BitDecoder::merge(down, up);
    up = new BitDecoder(QString('c' + i));
  }

  std::auto_ptr<BitDecoder> full(BitDecoder::merge(down, up));

  BOOST_REQUIRE(full->data().isNull());

  FastBitDecoder fast(full->createEncoder());

  BOOST_REQUIRE_EQUAL(fast.decode("1"), "n");
  BOOST_REQUIRE_EQUAL(fast.decode("01"), "m");
  BOOST_REQUIRE_EQUAL(fast.decode("001"), "l");
  BOOST_REQUIRE_EQUAL(fast.decode("0001"), "k");
  BOOST_REQUIRE_EQUAL(fast.decode("00001"), "j");
  BOOST_REQUIRE_EQUAL(fast.decode("000001"), "i");
  BOOST_REQUIRE_EQUAL(fast.decode("0000001"), "h");
  BOOST_REQUIRE_EQUAL(fast.decode("00000001"), "g");
  BOOST_REQUIRE_EQUAL(fast.decode("000000001"), "f");
  BOOST_REQUIRE_EQUAL(fast.decode("0000000001"), "e");
  BOOST_REQUIRE_EQUAL(fast.decode("00000000001"), "d");
  BOOST_REQUIRE_EQUAL(fast.decode("000000000001"), "c");
  BOOST_REQUIRE_EQUAL(fast.decode("0000000000001"), "b");
  BOOST_REQUIRE_EQUAL(fast.decode("0000000000000"), "a");

}