From 9e9774870072874dd210eefcca8355d5e5851697 Mon Sep 17 00:00:00 2001 From: Patrick Niklaus Date: Fri, 23 Mar 2018 12:20:05 +0000 Subject: [PATCH] Add datalayout tests --- unit_tests/storage/data_layout.cpp | 38 ++++++++++++++++++---------- unit_tests/storage/serialization.cpp | 29 +++++++++++++++++++++ 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/unit_tests/storage/data_layout.cpp b/unit_tests/storage/data_layout.cpp index 57e144583..6b628ecbe 100644 --- a/unit_tests/storage/data_layout.cpp +++ b/unit_tests/storage/data_layout.cpp @@ -8,7 +8,7 @@ #include -BOOST_AUTO_TEST_SUITE(serialization) +BOOST_AUTO_TEST_SUITE(data_layout) using namespace osrm; using namespace osrm::storage; @@ -17,16 +17,17 @@ BOOST_AUTO_TEST_CASE(layout_write_test) { DataLayout layout; - Block block_1 {20, 8*20}; - Block block_2 {1, 4*1}; - Block block_3 {100, static_cast(std::ceil(100/8.))}; + Block block_1{20, 8 * 20}; + Block block_2{1, 4 * 1}; + Block block_3{100, static_cast(std::ceil(100 / 64.))}; layout.SetBlock("block1", block_1); layout.SetBlock("block2", block_2); layout.SetBlock("block3", block_3); // Canary and alignment change layout size - BOOST_CHECK_GT(layout.GetSizeOfLayout(), block_1.byte_size + block_2.byte_size + block_3.byte_size); + BOOST_CHECK_GT(layout.GetSizeOfLayout(), + block_1.byte_size + block_2.byte_size + block_3.byte_size); BOOST_CHECK_EQUAL(layout.GetBlockSize("block1"), block_1.byte_size); BOOST_CHECK_EQUAL(layout.GetBlockSize("block2"), block_2.byte_size); @@ -39,16 +40,27 @@ BOOST_AUTO_TEST_CASE(layout_write_test) { auto block_1_ptr = layout.GetBlockPtr(buffer.data(), "block1"); auto block_2_ptr = layout.GetBlockPtr(buffer.data(), "block2"); - auto block_3_ptr = layout.GetBlockPtr(buffer.data(), "block3"); + auto block_3_ptr = layout.GetBlockPtr(buffer.data(), "block3"); - BOOST_CHECK_LT(smallest_addr, block_1_ptr); - BOOST_CHECK_GT(biggest_addr, block_1_ptr + layout.GetBlockEntries("block1")); - BOOST_CHECK_LT(smallest_addr, block_2_ptr); - BOOST_CHECK_GT(biggest_addr, block_2_ptr + layout.GetBlockEntries("block3")); - BOOST_CHECK_LT(smallest_addr, block_3_ptr); - BOOST_CHECK_GT(biggest_addr, block_3_ptr + layout.GetBlockEntries("block3")); + BOOST_CHECK_LT(reinterpret_cast(smallest_addr), + reinterpret_cast(block_1_ptr)); + BOOST_CHECK_GT( + reinterpret_cast(biggest_addr), + reinterpret_cast(block_1_ptr + layout.GetBlockEntries("block1"))); + + BOOST_CHECK_LT(reinterpret_cast(smallest_addr), + reinterpret_cast(block_2_ptr)); + BOOST_CHECK_GT( + reinterpret_cast(biggest_addr), + reinterpret_cast(block_2_ptr + layout.GetBlockEntries("block2"))); + + BOOST_CHECK_LT(reinterpret_cast(smallest_addr), + reinterpret_cast(block_3_ptr)); + BOOST_CHECK_GT(reinterpret_cast(biggest_addr), + reinterpret_cast( + block_3_ptr + static_cast( + std::ceil(layout.GetBlockEntries("block3") / 64)))); } - } BOOST_AUTO_TEST_SUITE_END() diff --git a/unit_tests/storage/serialization.cpp b/unit_tests/storage/serialization.cpp index 3496d1e9c..e8153a92f 100644 --- a/unit_tests/storage/serialization.cpp +++ b/unit_tests/storage/serialization.cpp @@ -115,4 +115,33 @@ BOOST_AUTO_TEST_CASE(tar_serialize_deallocting_vector) } } +BOOST_AUTO_TEST_CASE(buffer_serialize_map) +{ + std::map map = { + {"foo", 1}, + {"barrrr", 2}, + {"bal", 3}, + {"bazbar", 4}, + {"foofofofo", 5}, + }; + + std::string buffer; + { + io::BufferWriter writer; + storage::serialization::write(writer, map); + buffer = writer.GetBuffer(); + } + + std::map result; + { + io::BufferReader reader(buffer); + storage::serialization::read(reader, result); + } + + for (auto &pair : map) + { + BOOST_CHECK_EQUAL(pair.second, result[pair.first]); + } +} + BOOST_AUTO_TEST_SUITE_END()