Add datalayout tests
This commit is contained in:
parent
4a9fdca7b2
commit
9e97748700
@ -8,7 +8,7 @@
|
||||
|
||||
#include <cmath>
|
||||
|
||||
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::uint64_t>(std::ceil(100/8.))};
|
||||
Block block_1{20, 8 * 20};
|
||||
Block block_2{1, 4 * 1};
|
||||
Block block_3{100, static_cast<std::uint64_t>(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<std::uint64_t, true>(buffer.data(), "block1");
|
||||
auto block_2_ptr = layout.GetBlockPtr<std::uint32_t, true>(buffer.data(), "block2");
|
||||
auto block_3_ptr = layout.GetBlockPtr<unsigned char, true>(buffer.data(), "block3");
|
||||
auto block_3_ptr = layout.GetBlockPtr<std::uint64_t, true>(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<std::size_t>(smallest_addr),
|
||||
reinterpret_cast<std::size_t>(block_1_ptr));
|
||||
BOOST_CHECK_GT(
|
||||
reinterpret_cast<std::size_t>(biggest_addr),
|
||||
reinterpret_cast<std::size_t>(block_1_ptr + layout.GetBlockEntries("block1")));
|
||||
|
||||
BOOST_CHECK_LT(reinterpret_cast<std::size_t>(smallest_addr),
|
||||
reinterpret_cast<std::size_t>(block_2_ptr));
|
||||
BOOST_CHECK_GT(
|
||||
reinterpret_cast<std::size_t>(biggest_addr),
|
||||
reinterpret_cast<std::size_t>(block_2_ptr + layout.GetBlockEntries("block2")));
|
||||
|
||||
BOOST_CHECK_LT(reinterpret_cast<std::size_t>(smallest_addr),
|
||||
reinterpret_cast<std::size_t>(block_3_ptr));
|
||||
BOOST_CHECK_GT(reinterpret_cast<std::size_t>(biggest_addr),
|
||||
reinterpret_cast<std::size_t>(
|
||||
block_3_ptr + static_cast<std::size_t>(
|
||||
std::ceil(layout.GetBlockEntries("block3") / 64))));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
@ -115,4 +115,33 @@ BOOST_AUTO_TEST_CASE(tar_serialize_deallocting_vector)
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(buffer_serialize_map)
|
||||
{
|
||||
std::map<std::string, std::int32_t> 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<std::string, std::int32_t> 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()
|
||||
|
Loading…
Reference in New Issue
Block a user