[coding_tests] [bit_streams] Create tests for bit streams.

This commit is contained in:
Artyom Polkovnikov 2014-11-19 13:10:46 +03:00 committed by Alex Zolotarev
parent f2288cc5ee
commit 9790a8b899
2 changed files with 47 additions and 0 deletions

View file

@ -0,0 +1,46 @@
#include "../../testing/testing.hpp"
#include "../bit_streams.hpp"
#include "../reader.hpp"
#include "../writer.hpp"
#include "../../base/pseudo_random.hpp"
#include "../../std/utility.hpp"
#include "../../std/vector.hpp"
namespace
{
uint64_t GetRand64()
{
static PseudoRNG32 g_rng;
uint64_t result = g_rng.Generate();
result ^= uint64_t(g_rng.Generate()) << 32;
return result;
}
}
UNIT_TEST(BitStream_ReadWrite)
{
uint32_t const NUMS_CNT = 1000;
vector< pair<uint64_t, uint32_t> > nums;
for (uint32_t i = 0; i < NUMS_CNT; ++i)
{
uint32_t numBits = GetRand64() % 57;
uint64_t num = GetRand64() & (uint64_t(-1) >> (64 - numBits));
nums.push_back(make_pair(num, numBits));
}
vector<uint8_t> encodedBits;
{
MemWriter< vector<uint8_t> > encodedBitsWriter(encodedBits);
BitSink bitsSink(encodedBitsWriter);
for (uint32_t i = 0; i < nums.size(); ++i) bitsSink.Write(nums[i].first, nums[i].second);
}
MemReader encodedBitsReader(encodedBits.data(), encodedBits.size());
BitSource bitsSource(encodedBitsReader);
for (uint32_t i = 0; i < nums.size(); ++i)
{
uint64_t num = bitsSource.Read(nums[i].second);
TEST_EQUAL(num, nums[i].first, ());
}}

View file

@ -49,6 +49,7 @@ SOURCES += ../../testing/testingmain.cpp \
arithmetic_codec_test.cpp \
compressed_bit_vector_test.cpp \
compressed_varnum_vector_test.cpp \
bit_streams_test.cpp \
HEADERS += \
reader_test.hpp \