From 2c5e4e6c02bbc150d931d17ee33f62bbb0a81b1f Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Mon, 19 Mar 2018 12:21:43 +0000 Subject: [PATCH] Add test cases for range table and packed vector serialization --- unit_tests/util/serialization.cpp | 48 ++++++++++++++++++++++++++++--- 1 file changed, 44 insertions(+), 4 deletions(-) diff --git a/unit_tests/util/serialization.cpp b/unit_tests/util/serialization.cpp index 64c92ab6a..caf402dd5 100644 --- a/unit_tests/util/serialization.cpp +++ b/unit_tests/util/serialization.cpp @@ -18,19 +18,59 @@ BOOST_AUTO_TEST_CASE(tar_serialize_range_table) constexpr unsigned BLOCK_SIZE = 16; using TestRangeTable = RangeTable; - std::vector data = { - }; + std::vector> data = {std::vector{0, 10, 24, 100, 2, 100}, + std::vector{1, 12, 15}, + std::vector{10, 10, 10}}; for (const auto &v : data) { + TestRangeTable reference{v}; { - storage::tar::FileWriter writer(tmp.path, storage::tar::FileWriter::GenerateFingerprint); - util::serialization::write(writer, "my_range_table", v); + storage::tar::FileWriter writer(tmp.path, + storage::tar::FileWriter::GenerateFingerprint); + util::serialization::write(writer, "my_range_table", reference); } TestRangeTable result; storage::tar::FileReader reader(tmp.path, storage::tar::FileReader::VerifyFingerprint); util::serialization::read(reader, "my_range_table", result); + + for (auto index : util::irange(0, v.size())) + { + CHECK_EQUAL_COLLECTIONS(result.GetRange(index), reference.GetRange(index)); + } + } + } +} + +BOOST_AUTO_TEST_CASE(tar_serialize_packed_vector) +{ + TemporaryFile tmp; + { + using TestPackedVector = PackedVector; + + std::vector data = {{1597322404, + 1939964443, + 2112255763, + 1432114613, + 1067854538, + 352118606, + 1782436840, + 1909002904, + 165344818}, + {0, 1, 2, 3}}; + + for (const auto &v : data) + { + { + storage::tar::FileWriter writer(tmp.path, + storage::tar::FileWriter::GenerateFingerprint); + util::serialization::write(writer, "my_packed_vector", v); + } + + TestPackedVector result; + storage::tar::FileReader reader(tmp.path, storage::tar::FileReader::VerifyFingerprint); + util::serialization::read(reader, "my_packed_vector", result); } } }