diff --git a/search/search_integration_tests/generate_tests.cpp b/search/search_integration_tests/generate_tests.cpp new file mode 100644 index 0000000000..e6325d6b56 --- /dev/null +++ b/search/search_integration_tests/generate_tests.cpp @@ -0,0 +1,75 @@ +#include "testing/testing.hpp" + +#include "search/search_tests_support/test_mwm_builder.hpp" + +#include "generator/feature_builder.hpp" +#include "generator/osm_element.hpp" +#include "generator/osm2type.hpp" + +#include "indexer/classificator.hpp" +#include "indexer/feature_data.hpp" +#include "indexer/feature.hpp" +#include "indexer/index.hpp" + +#include "platform/local_country_file.hpp" + + +namespace +{ +using TBuilder = search::tests_support::TestMwmBuilder; + +void MakeFeature(TBuilder & builder, pair const & tag, m2::PointD const & pt) +{ + OsmElement e; + e.AddTag(tag.first, tag.second); + + FeatureParams params; + ftype::GetNameAndType(&e, params); + params.AddName("en", "xxx"); + + FeatureBuilder1 fb; + fb.SetParams(params); + fb.SetCenter(pt); + + TEST(builder.Add(fb), (fb)); +} +} + +UNIT_TEST(Generate_DeprecatedTypes) +{ + auto file = platform::LocalCountryFile::MakeForTesting("testCountry"); + TBuilder builder(file, feature::DataHeader::country); + + // Deprecated types. + MakeFeature(builder, {"office", "travel_agent"}, {0, 0}); + MakeFeature(builder, {"shop", "tailor"}, {1, 1}); + MakeFeature(builder, {"shop", "estate_agent"}, {2, 2}); + + builder.Finish(); + + Index index; + TEST_EQUAL(index.Register(file).second, MwmSet::RegResult::Success, ()); + + // New types. + StringIL arr[] = { {"shop"}, {"office"} }; + + Classificator const & cl = classif(); + set types; + for (auto const & s : arr) + types.insert(cl.GetTypeByPath(s)); + + int count = 0; + auto const fn = [&](FeatureType & ft) + { + ++count; + ft.ForEachType([&](uint32_t t) + { + TEST(types.count(t) > 0, (cl.GetReadableObjectName(t))); + }); + }; + index.ForEachInScale(fn, scales::GetUpperScale()); + + TEST_EQUAL(count, 3, ()); + + file.DeleteFromDisk(MapOptions::Map); +} diff --git a/search/search_integration_tests/search_integration_tests.pro b/search/search_integration_tests/search_integration_tests.pro index b7d98e4e66..5bfa36ff81 100644 --- a/search/search_integration_tests/search_integration_tests.pro +++ b/search/search_integration_tests/search_integration_tests.pro @@ -24,6 +24,7 @@ SOURCES += \ helpers.cpp \ search_query_v2_test.cpp \ smoke_test.cpp \ + generate_tests.cpp \ HEADERS += \ helpers.hpp \