diff options
author | Yuri Gorshenin <mipt.vi002@gmail.com> | 2017-07-13 18:04:37 +0300 |
---|---|---|
committer | Arsentiy Milchakov <milcars@mapswithme.com> | 2017-07-13 18:04:37 +0300 |
commit | 92358135885b3f71767fa8b6fc53af160ae58d9d (patch) | |
tree | 1a37c4f0935ebbe5668180a93e9841b50d963cee /ugc/ugc_tests | |
parent | 498e98f8d0baf92b75ecac31cf96dbee2f3ec041 (diff) |
[ugc] Binary SerDes. (#6577)
* [ugc] Binary SerDes.
* Review fixes.
Diffstat (limited to 'ugc/ugc_tests')
-rw-r--r-- | ugc/ugc_tests/CMakeLists.txt | 2 | ||||
-rw-r--r-- | ugc/ugc_tests/serdes_binary_tests.cpp | 105 | ||||
-rw-r--r-- | ugc/ugc_tests/ugc_tests.pro | 1 |
3 files changed, 108 insertions, 0 deletions
diff --git a/ugc/ugc_tests/CMakeLists.txt b/ugc/ugc_tests/CMakeLists.txt index 825c4205be..20d7d9b610 100644 --- a/ugc/ugc_tests/CMakeLists.txt +++ b/ugc/ugc_tests/CMakeLists.txt @@ -5,9 +5,11 @@ include_directories(${OMIM_ROOT}/3party/jansson/src) set( SRC serdes_tests.cpp + serdes_binary_tests.cpp ) omim_add_test(${PROJECT_NAME} ${SRC}) + omim_link_libraries( ${PROJECT_NAME} ugc diff --git a/ugc/ugc_tests/serdes_binary_tests.cpp b/ugc/ugc_tests/serdes_binary_tests.cpp new file mode 100644 index 0000000000..b0266d873e --- /dev/null +++ b/ugc/ugc_tests/serdes_binary_tests.cpp @@ -0,0 +1,105 @@ +#include "testing/testing.hpp" + +#include "ugc/api.hpp" +#include "ugc/binary/serdes.hpp" +#include "ugc/binary/ugc_holder.hpp" +#include "ugc/types.hpp" + +#include <cstdint> +#include <vector> + +using namespace std; +using namespace ugc::binary; +using namespace ugc; + +namespace +{ +vector<TranslationKey> const GetExpectedTranslationKeys() +{ + vector<TranslationKey> keys = { + {"food", "service", "music", "best-drink", "best-meal", "Coffee", "Cherry Pie"}}; + sort(keys.begin(), keys.end()); + return keys; +} + +void CollectTexts(UGC const & ugc, vector<Text> & texts) +{ + for (auto const & review : ugc.m_reviews) + texts.emplace_back(review.m_text); +} + +void CollectTexts(vector<IndexUGC> const & ugcs, vector<vector<Text>> & texts) +{ + for (auto const & ugc : ugcs) + { + texts.emplace_back(); + CollectTexts(ugc.m_ugc, texts.back()); + } +} + +UNIT_TEST(TranslationKeys_Smoke) +{ + UGCHolder holder; + holder.Add(0 /* index */, Api::MakeTestUGC1()); + holder.Add(1 /* index */, Api::MakeTestUGC2()); + + vector<vector<Text>> texts; + CollectTexts(holder.m_ugcs, texts); + + UGCSeriaizer serializer(move(holder.m_ugcs)); + + TEST_EQUAL(GetExpectedTranslationKeys(), serializer.GetTranslationKeys(), ()); + TEST_EQUAL(texts, serializer.GetTexts(), ()); +} + +UNIT_TEST(BinarySerDes_Smoke) +{ + vector<uint8_t> buffer; + + using Sink = MemWriter<decltype(buffer)>; + + auto const expectedUGC1 = Api::MakeTestUGC1(Time(chrono::hours(24 * 123))); + auto const expectedUGC2 = Api::MakeTestUGC2(Time(chrono::hours(24 * 456))); + + { + UGCHolder holder; + holder.Add(31337 /* index */, expectedUGC1); + holder.Add(12345 /* index */, expectedUGC2); + + Sink sink(buffer); + UGCSeriaizer ser(move(holder.m_ugcs)); + TEST_EQUAL(GetExpectedTranslationKeys(), ser.GetTranslationKeys(), ()); + ser.Serialize(sink); + } + + UGCDeserializerV0 des; + + { + MemReader reader(buffer.data(), buffer.size()); + + TEST(des.GetTranslationKeys().empty(), ()); + des.InitializeIfNeeded(reader); + TEST_EQUAL(GetExpectedTranslationKeys(), des.GetTranslationKeys(), ()); + + UGC ugc; + TEST(!des.Deserialize(reader, 0 /* index */, ugc), ()); + + TEST(des.Deserialize(reader, 12345 /* index */, ugc), ()); + TEST_EQUAL(ugc, expectedUGC2, ()); + + TEST(des.Deserialize(reader, 31337 /* index */, ugc), ()); + TEST_EQUAL(ugc, expectedUGC1, ()); + } + + { + MemReader reader(buffer.data(), buffer.size()); + + UGC ugc; + TEST(des.Deserialize(reader, 31337 /* index */, ugc), ()); + TEST_EQUAL(ugc, expectedUGC1, ()); + + TEST(des.Deserialize(reader, 12345 /* index */, ugc), ()); + TEST_EQUAL(ugc, expectedUGC2, ()); + } +} +} // namespace diff --git a/ugc/ugc_tests/ugc_tests.pro b/ugc/ugc_tests/ugc_tests.pro index 3ae6cb62de..588d99c7bc 100644 --- a/ugc/ugc_tests/ugc_tests.pro +++ b/ugc/ugc_tests/ugc_tests.pro @@ -20,4 +20,5 @@ QT *= core SOURCES += \ ../../testing/testingmain.cpp \ + serdes_binary_tests.cpp \ serdes_tests.cpp \ |