diff options
author | Ruslan Kovalev <ruslan.a.kovalev@gmail.com> | 2022-02-10 16:46:44 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:46:44 +0300 |
commit | 59e19371de37995fcb36beb16cd6ec030af960bc (patch) | |
tree | fa68e36093ebff8b805462e9e6d331fe9d348214 /library/cpp/bit_io/bitinout_ut.cpp | |
parent | 89db6fe2fe2c32d2a832ddfeb04e8d078e301084 (diff) | |
download | ydb-59e19371de37995fcb36beb16cd6ec030af960bc.tar.gz |
Restoring authorship annotation for Ruslan Kovalev <ruslan.a.kovalev@gmail.com>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/bit_io/bitinout_ut.cpp')
-rw-r--r-- | library/cpp/bit_io/bitinout_ut.cpp | 340 |
1 files changed, 170 insertions, 170 deletions
diff --git a/library/cpp/bit_io/bitinout_ut.cpp b/library/cpp/bit_io/bitinout_ut.cpp index 23a1ddf344..375e89abde 100644 --- a/library/cpp/bit_io/bitinout_ut.cpp +++ b/library/cpp/bit_io/bitinout_ut.cpp @@ -1,19 +1,19 @@ -#include "bitinput.h" -#include "bitoutput.h" - +#include "bitinput.h" +#include "bitoutput.h" + #include <library/cpp/testing/unittest/registar.h> - + #include <util/stream/buffer.h> -#include <util/generic/buffer.h> - -namespace NBitIO { - static const char BITS_REF[] = +#include <util/generic/buffer.h> + +namespace NBitIO { + static const char BITS_REF[] = "00100010 01000000 00000000 00100111 11011111 01100111 11010101 00010100 " "00100010 01100011 11100011 00110000 11011011 11011111 01001100 00110101 " "10011110 01011111 01010000 00000110 00011011 00100110 00010100 01110011 " "00001010 10101010 10101010 10101010 10101010 10101010 10101010 10101010 " "10110101 01010101 01010101 01010101 01010101 01010101 01010101 01010101 " - "01000000"; + "01000000"; inline ui64 Bits(ui64 bytes) { return bytes << 3ULL; @@ -43,237 +43,237 @@ namespace NBitIO { inline TString PrintBits(T t, ui32 bits = Bits(sizeof(T))) { return PrintBits((char*)&t, ((char*)&t) + BytesUp(bits)); } -} - -class TBitIOTest: public TTestBase { - UNIT_TEST_SUITE(TBitIOTest); +} + +class TBitIOTest: public TTestBase { + UNIT_TEST_SUITE(TBitIOTest); UNIT_TEST(TestBitIO) - UNIT_TEST_SUITE_END(); - -private: + UNIT_TEST_SUITE_END(); + +private: using TBi = NBitIO::TBitInput; using TVec = TVector<char>; - + void static CheckBits(const TVec& v, const TString& ref, const TString& rem) { - UNIT_ASSERT_VALUES_EQUAL_C(NBitIO::PrintBits(v.begin(), v.end()), ref, rem); - } - - void DoRead(TBi& b, ui32& t) { + UNIT_ASSERT_VALUES_EQUAL_C(NBitIO::PrintBits(v.begin(), v.end()), ref, rem); + } + + void DoRead(TBi& b, ui32& t) { b.Read(t, 1, 0); // 1 - b.ReadK<3>(t, 1); // 4 + b.ReadK<3>(t, 1); // 4 b.Read(t, 5, 4); // 9 - b.ReadK<14>(t, 9); // 23 + b.ReadK<14>(t, 9); // 23 b.Read(t, 1, 23); // 24 - b.ReadK<5>(t, 24); // 29 + b.ReadK<5>(t, 24); // 29 b.Read(t, 3, 29); // 32 - } - - template <typename TBo> - void DoWrite(TBo& b, ui32 t) { - b.Write(t, 1, 0); //1 - b.Write(t, 3, 1); //4 - b.Write(t, 5, 4); //9 - b.Write(t, 14, 9); //23 - b.Write(t, 1, 23); //24 - b.Write(t, 5, 24); //29 + } + + template <typename TBo> + void DoWrite(TBo& b, ui32 t) { + b.Write(t, 1, 0); //1 + b.Write(t, 3, 1); //4 + b.Write(t, 5, 4); //9 + b.Write(t, 14, 9); //23 + b.Write(t, 1, 23); //24 + b.Write(t, 5, 24); //29 b.Write(t, 3, 29); //32 - } - - template <typename TBo> + } + + template <typename TBo> void DoWrite1(TBo& out, const TString& rem) { - out.Write(0x0C, 3); + out.Write(0x0C, 3); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 1u, (rem + ", " + ToString(__LINE__))); - out.Write(0x18, 4); + out.Write(0x18, 4); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 1u, (rem + ", " + ToString(__LINE__))); - out.Write(0x0C, 3); + out.Write(0x0C, 3); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 2u, (rem + ", " + ToString(__LINE__))); - out.Write(0x30000, 17); + out.Write(0x30000, 17); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 4u, (rem + ", " + ToString(__LINE__))); - out.Write(0x0C, 3); + out.Write(0x0C, 3); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 4u, (rem + ", " + ToString(__LINE__))); - } - - template <typename TBo> + } + + template <typename TBo> void DoWrite2(TBo& out, const TString& rem) { - out.Write(0x0C, 3); + out.Write(0x0C, 3); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 8u, (rem + ", " + ToString(__LINE__))); - - out.Write(0x42, 7); + + out.Write(0x42, 7); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 9u, (rem + ", " + ToString(__LINE__))); - - DoWrite(out, 1637415112); + + DoWrite(out, 1637415112); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 13u, (rem + ", " + ToString(__LINE__))); - - DoWrite(out, 897998715); + + DoWrite(out, 897998715); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 17u, (rem + ", " + ToString(__LINE__))); - - DoWrite(out, 201416527); + + DoWrite(out, 201416527); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 21u, (rem + ", " + ToString(__LINE__))); - - DoWrite(out, 432344219); + + DoWrite(out, 432344219); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 25u, (rem + ", " + ToString(__LINE__))); - - out.Write(0xAAAAAAAAAAAAAAAAULL, 64); + + out.Write(0xAAAAAAAAAAAAAAAAULL, 64); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 33u, (rem + ", " + ToString(__LINE__))); - - out.Write(0x5555555555555555ULL, 64); + + out.Write(0x5555555555555555ULL, 64); UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 41u, (rem + ", " + ToString(__LINE__))); - } - + } + void DoBitOutput(NBitIO::TBitOutputYVector& out, const TString& rem) { - DoWrite1(out, rem); - - out.WriteWords<8>(0xabcdef); - UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 8u, (rem + ", " + ToString(__LINE__))); - - DoWrite2(out, rem); - } - + DoWrite1(out, rem); + + out.WriteWords<8>(0xabcdef); + UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 8u, (rem + ", " + ToString(__LINE__))); + + DoWrite2(out, rem); + } + void DoBitOutput(NBitIO::TBitOutputArray& out, const TString& rem) { - DoWrite1(out, rem); - - out.WriteWords<8>(0xabcdef); - UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 8u, (rem + ", " + ToString(__LINE__))); - - DoWrite2(out, rem); - } - + DoWrite1(out, rem); + + out.WriteWords<8>(0xabcdef); + UNIT_ASSERT_VALUES_EQUAL_C(out.GetOffset(), 8u, (rem + ", " + ToString(__LINE__))); + + DoWrite2(out, rem); + } + void DoBitInput(TBi& in, const TString& rem) { - UNIT_ASSERT(!in.Eof()); - - { - ui64 val; - - val = 0; + UNIT_ASSERT(!in.Eof()); + + { + ui64 val; + + val = 0; UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 0u, (rem + ": " + NBitIO::PrintBits(val))); - + UNIT_ASSERT_C(in.Read(val, 3), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 1u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; + + val = 0; UNIT_ASSERT_C(in.Read(val, 4), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x8u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 1u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; + + val = 0; UNIT_ASSERT_C(in.Read(val, 3), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 2u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; + + val = 0; UNIT_ASSERT_C(in.Read(val, 17), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x10000u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 4u, (rem + ": " + NBitIO::PrintBits(val))); - - { - ui32 rt = 0; - in.ReadRandom(30, rt, 10, 20); + + { + ui32 rt = 0; + in.ReadRandom(30, rt, 10, 20); UNIT_ASSERT_STRINGS_EQUAL(NBitIO::PrintBits(rt).data(), "00000000 00000000 00001111 01111100"); - } - val = 0; + } + val = 0; UNIT_ASSERT_C(in.Read(val, 3), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; + + val = 0; UNIT_ASSERT_C(in.ReadWords<8>(val), (rem + ": " + NBitIO::PrintBits(val)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0xabcdefU, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 8u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; + + val = 0; UNIT_ASSERT_C(in.Read(val, 3), (rem + ", " + ToString(__LINE__)).data()); - + UNIT_ASSERT_VALUES_EQUAL_C(val, 0x4u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 8u, (rem + ": " + NBitIO::PrintBits(val))); UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - - val = 0; - in.Read(val, 7); + + val = 0; + in.Read(val, 7); UNIT_ASSERT_VALUES_EQUAL_C(val, 0x42u, (rem + ": " + NBitIO::PrintBits(val))); - } - - { - ui32 v = 0; - - DoRead(in, v); + } + + { + ui32 v = 0; + + DoRead(in, v); UNIT_ASSERT_VALUES_EQUAL_C(v, 1637415112ul, (rem + ": " + NBitIO::PrintBits(v))); - DoRead(in, v); + DoRead(in, v); UNIT_ASSERT_VALUES_EQUAL_C(v, 897998715u, (rem + ": " + NBitIO::PrintBits(v))); - DoRead(in, v); + DoRead(in, v); UNIT_ASSERT_VALUES_EQUAL_C(v, 201416527u, (rem + ": " + NBitIO::PrintBits(v))); - DoRead(in, v); + DoRead(in, v); UNIT_ASSERT_VALUES_EQUAL_C(v, 432344219u, (rem + ": " + NBitIO::PrintBits(v))); - + UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 25u, (rem + ": " + NBitIO::PrintBits(v))); - } - - { - ui64 v8 = 0; - in.ReadSafe(v8, 64); - + } + + { + ui64 v8 = 0; + in.ReadSafe(v8, 64); + UNIT_ASSERT_VALUES_EQUAL_C(v8, 0xAAAAAAAAAAAAAAAAULL, (rem + ": " + NBitIO::PrintBits(v8))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 33u, (rem + ": " + NBitIO::PrintBits(v8))); - - v8 = 0; - in.ReadK<64>(v8); - + + v8 = 0; + in.ReadK<64>(v8); + UNIT_ASSERT_VALUES_EQUAL_C(v8, 0x5555555555555555ULL, (rem + ": " + NBitIO::PrintBits(v8))); UNIT_ASSERT_VALUES_EQUAL_C(in.GetOffset(), 41u, (rem + ": " + NBitIO::PrintBits(v8))); - } - - ui32 v = 0; + } + + ui32 v = 0; UNIT_ASSERT_C(!in.Eof(), (rem + ", " + ToString(__LINE__)).data()); UNIT_ASSERT_C(in.Read(v, 5), (rem + ", " + ToString(__LINE__)).data()); UNIT_ASSERT_C(in.Eof(), (rem + ", " + ToString(__LINE__)).data()); - } - - void TestBitIO() { - { - TVec vec; - - { - NBitIO::TBitOutputYVector out(&vec); - DoBitOutput(out, ToString(__LINE__)); - } - + } + + void TestBitIO() { + { + TVec vec; + + { + NBitIO::TBitOutputYVector out(&vec); + DoBitOutput(out, ToString(__LINE__)); + } + CheckBits(vec, NBitIO::BITS_REF, ToString(__LINE__).data()); - - { - TBi in(vec); - DoBitInput(in, ToString(__LINE__)); - } - } - { - TVec vec; - vec.resize(41, 0); - { - NBitIO::TBitOutputArray out(vec.begin(), vec.size()); - DoBitOutput(out, ToString(__LINE__)); - } - + + { + TBi in(vec); + DoBitInput(in, ToString(__LINE__)); + } + } + { + TVec vec; + vec.resize(41, 0); + { + NBitIO::TBitOutputArray out(vec.begin(), vec.size()); + DoBitOutput(out, ToString(__LINE__)); + } + CheckBits(vec, NBitIO::BITS_REF, ToString(__LINE__).data()); - - { - TBi in(vec); - DoBitInput(in, ToString(__LINE__)); - } - } - } -}; - -UNIT_TEST_SUITE_REGISTRATION(TBitIOTest); + + { + TBi in(vec); + DoBitInput(in, ToString(__LINE__)); + } + } + } +}; + +UNIT_TEST_SUITE_REGISTRATION(TBitIOTest); |