12345678910111213141516171819202122232425262728293031323334353637383940 |
- #include "region_packer.h"
- #include <library/cpp/testing/unittest/registar.h>
- template <typename TValue>
- void TestPacker() {
- TValue values[] = {1, 2, 3, 42};
- TString buffer;
- TRegionPacker<TValue> p;
- using TValues = TArrayRef<TValue>;
- TValues valueRegion = TValues(values, Y_ARRAY_SIZE(values));
- size_t sz = p.MeasureLeaf(valueRegion);
- UNIT_ASSERT_VALUES_EQUAL(sz, 1 + sizeof(values));
- buffer.resize(sz);
- p.PackLeaf(buffer.begin(), valueRegion, sz);
- UNIT_ASSERT_VALUES_EQUAL(buffer[0], 4);
- p.UnpackLeaf(buffer.data(), valueRegion);
- UNIT_ASSERT_EQUAL(valueRegion.data(), (const TValue*)(buffer.begin() + 1));
- UNIT_ASSERT_EQUAL(valueRegion.size(), Y_ARRAY_SIZE(values));
- UNIT_ASSERT_EQUAL(0, memcmp(values, valueRegion.data(), sizeof(values)));
- }
- Y_UNIT_TEST_SUITE(RegionPacker) {
- Y_UNIT_TEST(Test0) {
- TestPacker<char>();
- TestPacker<signed char>();
- TestPacker<unsigned char>();
- TestPacker<i8>();
- TestPacker<ui8>();
- TestPacker<i16>();
- TestPacker<ui16>();
- TestPacker<i32>();
- TestPacker<ui32>();
- TestPacker<i64>();
- TestPacker<ui64>();
- }
- }
|