Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuri Gorshenin <mipt.vi002@gmail.com>2017-07-13 18:04:37 +0300
committerArsentiy Milchakov <milcars@mapswithme.com>2017-07-13 18:04:37 +0300
commit92358135885b3f71767fa8b6fc53af160ae58d9d (patch)
tree1a37c4f0935ebbe5668180a93e9841b50d963cee /ugc/ugc_tests
parent498e98f8d0baf92b75ecac31cf96dbee2f3ec041 (diff)
[ugc] Binary SerDes. (#6577)
* [ugc] Binary SerDes. * Review fixes.
Diffstat (limited to 'ugc/ugc_tests')
-rw-r--r--ugc/ugc_tests/CMakeLists.txt2
-rw-r--r--ugc/ugc_tests/serdes_binary_tests.cpp105
-rw-r--r--ugc/ugc_tests/ugc_tests.pro1
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 \