Skip to content

Commit 985d7f3

Browse files
committed
Buffers test: add tests for set_meta & set value
1 parent ec66d95 commit 985d7f3

1 file changed

Lines changed: 46 additions & 14 deletions

File tree

test/buffers_utest.cpp

Lines changed: 46 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ TYPED_TEST(BuffersTest, TestCalculateSize) // NOLINT
363363
}
364364
}
365365

366-
TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
366+
TYPED_TEST(BuffersTest, TestGetSetValueAndMeta) // NOLINT
367367
{
368368
const int n = 2;
369369
const size_t size = 4;
@@ -374,7 +374,7 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
374374
(sizeof(TypeParam) == 1) ? 1 : size * sizeof(TypeParam) / CHAR_BIT);
375375

376376
// vector of meta buffers, as `meta_size` depends on TypeParam
377-
std::vector<std::vector<uint8_t>> metas = {
377+
std::vector<std::vector<uint8_t>> compacted_metas = {
378378
// for TypeParam = uint8_t
379379
{0b1010, 0b1111},
380380
// for TypeParam = uint16_t
@@ -394,7 +394,7 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
394394

395395
// vector stores expected meta per elements. These values are respect to
396396
// `metas`
397-
std::vector<std::vector<uint8_t>> expected_metas = {
397+
std::vector<std::vector<TypeParam>> expanded_metas = {
398398
// for TypeParam = uint8_t: each element has a meta of 1 bit
399399
{0b0, 0b1, 0b0, 0b1, 0b1, 0b1, 0b1, 0b1},
400400
// for TypeParam = uint16_t: each element has a meta of 2 bits
@@ -413,7 +413,7 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
413413
};
414414

415415
// data buffers
416-
std::vector<std::vector<TypeParam>> values = {
416+
std::vector<std::vector<TypeParam>> packed_values = {
417417
// for TypeParam = uint8_t
418418
{0x42, 0x51, 0x19, 0x3a, 0xab, 0xdf, 0x1c, 0xa1},
419419
// for TypeParam = uint16_t
@@ -451,7 +451,7 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
451451
} unpack;
452452

453453
// vector stores expected unpacked elements
454-
std::vector<std::vector<unpack>> expected_unpacked_values = {
454+
std::vector<std::vector<unpack>> unpacked_values = {
455455
// for TypeParam = uint8_t: for each half part
456456
// - first 4 bits from meta
457457
// - last 4 bits from data
@@ -508,18 +508,19 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
508508

509509
const size_t id = quadiron::arith::log2<TypeParam>(sizeof(TypeParam));
510510

511-
const std::vector<TypeParam*> mem = {values[id].data(),
512-
values[id].data() + size};
513-
const std::vector<uint8_t*> meta = {metas[id].data(),
514-
metas[id].data() + meta_size};
511+
const std::vector<TypeParam*> mem = {packed_values[id].data(),
512+
packed_values[id].data() + size};
513+
const std::vector<uint8_t*> meta = {compacted_metas[id].data(),
514+
compacted_metas[id].data() + meta_size};
515515

516-
vec::Buffers<TypeParam> buf(n, size, mem, &meta);
516+
// For checking get functions
517+
vec::Buffers<TypeParam> buf1(n, size, mem, &meta);
517518

518519
// check get_meta
519520
for (int i = 0; i < n; ++i) {
520521
for (size_t j = 0; j < size; ++j) {
521-
const TypeParam got = buf.get_meta(i, j);
522-
const TypeParam expected = expected_metas[id][i * size + j];
522+
const TypeParam got = buf1.get_meta(i, j);
523+
const TypeParam expected = expanded_metas[id][i * size + j];
523524
ASSERT_EQ(expected, got);
524525
}
525526
}
@@ -528,10 +529,41 @@ TYPED_TEST(BuffersTest, TestGetValueAndMeta) // NOLINT
528529
for (int i = 0; i < n; ++i) {
529530
for (size_t j = 0; j < size; ++j) {
530531
TypeParam hi, lo;
531-
buf.get(i, j, hi, lo);
532-
const unpack expected = expected_unpacked_values[id][i * size + j];
532+
buf1.get(i, j, hi, lo);
533+
const unpack expected = unpacked_values[id][i * size + j];
533534
ASSERT_EQ(expected.hi, hi);
534535
ASSERT_EQ(expected.lo, lo);
535536
}
536537
}
538+
539+
// For checking set functions
540+
vec::Buffers<TypeParam> buf2(n, size, true);
541+
542+
// set meta & check
543+
for (int i = 0; i < n; ++i) {
544+
for (size_t j = 0; j < size; ++j) {
545+
const TypeParam m_val = expanded_metas[id][i * size + j];
546+
buf2.set_meta(i, j, m_val);
547+
ASSERT_EQ(m_val, buf2.get_meta(i, j));
548+
}
549+
const uint8_t* got = buf2.get_meta(i);
550+
const uint8_t* expected = compacted_metas[id].data();
551+
ASSERT_EQ(compacted_metas[id].size(), n * meta_size);
552+
ASSERT_TRUE(std::equal(got, got + meta_size, expected + i * meta_size));
553+
}
554+
555+
// set unpack element & check
556+
for (int i = 0; i < n; ++i) {
557+
for (size_t j = 0; j < size; ++j) {
558+
unpack p = unpacked_values[id][i * size + j];
559+
buf2.set(i, j, p.hi, p.lo);
560+
TypeParam hi, lo;
561+
buf2.get(i, j, hi, lo);
562+
ASSERT_EQ(p.hi, hi);
563+
ASSERT_EQ(p.lo, lo);
564+
}
565+
const TypeParam* got = buf2.get(i);
566+
const TypeParam* expected = packed_values[id].data();
567+
ASSERT_TRUE(std::equal(got, got + size, expected + i * size));
568+
}
537569
}

0 commit comments

Comments
 (0)