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:
authorSergey Yershov <yershov@corp.mail.ru>2014-12-25 20:32:07 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:35:26 +0300
commit8f6b34bdb4e0e3ffb4010d5bd44df96bb4467a22 (patch)
tree2a02f3ce859edf2397c83d1fd2f3e48efa0b9bc0 /generator/generator_tests/metadata_test.cpp
parentaf6bd463306aad0bc7154d5550a298a104bad143 (diff)
Moved work with metadata to separated files
Diffstat (limited to 'generator/generator_tests/metadata_test.cpp')
-rw-r--r--generator/generator_tests/metadata_test.cpp153
1 files changed, 153 insertions, 0 deletions
diff --git a/generator/generator_tests/metadata_test.cpp b/generator/generator_tests/metadata_test.cpp
new file mode 100644
index 0000000000..a427f2d16f
--- /dev/null
+++ b/generator/generator_tests/metadata_test.cpp
@@ -0,0 +1,153 @@
+#include "../../testing/testing.hpp"
+#include "../../base/logging.hpp"
+
+#include "../../indexer/classificator_loader.hpp"
+#include "../../generator/osm2meta.hpp"
+#include "../../coding/writer.hpp"
+#include "../../coding/reader.hpp"
+
+UNIT_TEST(Metadata_ValidateAndFormat_stars)
+{
+ FeatureParams params;
+ MetadataTagProcessor p(params);
+
+ // ignore incorrect values
+ p("stars","0");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","-1");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","aasdasdas");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","8");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","10");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","910");
+ TEST(params.GetMetadata().Empty(), ());
+ p("stars","100");
+ TEST(params.GetMetadata().Empty(), ());
+
+ // check correct values
+ p("stars","1");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "1", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","2");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "2", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","3");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "3", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","4");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "4", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","5");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "5", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","6");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "6", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","7");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "7", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ // check almost correct values
+ p("stars","4+");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "4", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+ p("stars","5s");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "5", ())
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_STARS);
+
+}
+
+UNIT_TEST(Metadata_ValidateAndFormat_operator)
+{
+ classificator::Load();
+ Classificator const & c = classif();
+ uint32_t const type_atm = c.GetTypeByPath({ "amenity", "atm" });
+ uint32_t const type_fuel = c.GetTypeByPath({ "amenity", "fuel" });
+
+ FeatureParams params;
+ MetadataTagProcessor p(params);
+
+ // ignore tag 'operator' if feature have inappropriate type
+ p("operator","Some");
+ TEST(params.GetMetadata().Empty(), ());
+
+ params.SetType(type_atm);
+ p("operator","Some");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_OPERATOR), "Some", ());
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_OPERATOR);
+
+ params.SetType(type_fuel);
+ p("operator","Some");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_OPERATOR), "Some", ());
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_OPERATOR);
+
+ params.SetType(type_atm);
+ params.AddType(type_fuel);
+ p("operator","Some");
+ TEST_EQUAL(params.GetMetadata().Get(feature::FeatureMetadata::FMD_OPERATOR), "Some", ());
+ params.GetMetadata().Drop(feature::FeatureMetadata::FMD_OPERATOR);
+}
+
+UNIT_TEST(Metadata_ReadWrite_Intermediate)
+{
+ FeatureParams params;
+ FeatureParams params_test;
+ MetadataTagProcessor p(params);
+
+ vector<char> buffer;
+ MemWriter<vector<char> > writer(buffer);
+
+ p("stars","3");
+ p("phone","+123456789");
+ p("opening_hours","24/7");
+ p("cuisine","regional");
+ p("operator","Unused");
+ params.GetMetadata().Serialize(writer);
+
+ MemReader reader(buffer.data(), buffer.size());
+ ReaderSource<MemReader> src(reader);
+ params_test.GetMetadata().Deserialize(src);
+
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "3", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_PHONE_NUMBER), "+123456789", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_OPEN_HOURS), "24/7", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_CUISINE), "regional", ())
+ TEST(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_OPERATOR).empty(), ())
+}
+
+UNIT_TEST(Metadata_ReadWrite_MWM)
+{
+ FeatureParams params;
+ FeatureParams params_test;
+ MetadataTagProcessor p(params);
+
+ vector<char> buffer;
+ MemWriter<vector<char> > writer(buffer);
+
+ p("stars","3");
+ p("phone","+123456789");
+ p("opening_hours","24/7");
+ p("cuisine","regional");
+ p("operator","Unused");
+ params.GetMetadata().SerializeToMWM(writer);
+
+ MemReader reader(buffer.data(), buffer.size());
+ ReaderSource<MemReader> src(reader);
+ params_test.GetMetadata().DeserializeFromMWM(src);
+
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_STARS), "3", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_PHONE_NUMBER), "+123456789", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_OPEN_HOURS), "24/7", ())
+ TEST_EQUAL(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_CUISINE), "regional", ())
+ TEST(params_test.GetMetadata().Get(feature::FeatureMetadata::FMD_OPERATOR).empty(), ())
+}