forked from organicmaps/organicmaps
[coding_tests] [bit_streams] Create tests for bit streams.
This commit is contained in:
parent
f2288cc5ee
commit
9790a8b899
2 changed files with 47 additions and 0 deletions
46
coding/coding_tests/bit_streams_test.cpp
Normal file
46
coding/coding_tests/bit_streams_test.cpp
Normal 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, ());
|
||||
}}
|
||||
|
|
@ -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 \
|
||||
|
|
Loading…
Add table
Reference in a new issue