1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#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>();
}
}
|