From e77592b68e345c8cec11324be0c03c1b5a8df6bb Mon Sep 17 00:00:00 2001 From: tatiana-yan Date: Tue, 23 Apr 2019 14:06:13 +0300 Subject: [search] Add RemoveDauplicatingStreets test. --- generator/generator_tests_support/test_feature.cpp | 6 +++--- generator/generator_tests_support/test_feature.hpp | 3 +++ search/search_integration_tests/processor_test.cpp | 24 ++++++++++++++++++++++ search/search_tests_support/helpers.cpp | 7 +++++++ search/search_tests_support/helpers.hpp | 2 ++ 5 files changed, 39 insertions(+), 3 deletions(-) diff --git a/generator/generator_tests_support/test_feature.cpp b/generator/generator_tests_support/test_feature.cpp index 1ab2e297d8..14fd20412f 100644 --- a/generator/generator_tests_support/test_feature.cpp +++ b/generator/generator_tests_support/test_feature.cpp @@ -206,12 +206,12 @@ string TestVillage::ToDebugString() const // TestStreet -------------------------------------------------------------------------------------- TestStreet::TestStreet(vector const & points, string const & name, string const & lang) - : TestFeature(name, lang), m_points(points) + : TestFeature(name, lang), m_points(points), m_highwayType("living_street") { } TestStreet::TestStreet(vector const & points, StringUtf8Multilang const & name) - : TestFeature(name), m_points(points) + : TestFeature(name), m_points(points), m_highwayType("living_street") { } @@ -220,7 +220,7 @@ void TestStreet::Serialize(FeatureBuilder1 & fb) const TestFeature::Serialize(fb); auto const & classificator = classif(); - fb.SetType(classificator.GetTypeByPath({"highway", "living_street"})); + fb.SetType(classificator.GetTypeByPath({"highway", m_highwayType})); for (auto const & point : m_points) fb.AddPoint(point); diff --git a/generator/generator_tests_support/test_feature.hpp b/generator/generator_tests_support/test_feature.hpp index e9fbc7b01c..a98a606822 100644 --- a/generator/generator_tests_support/test_feature.hpp +++ b/generator/generator_tests_support/test_feature.hpp @@ -122,12 +122,15 @@ public: TestStreet(std::vector const & points, std::string const & name, std::string const & lang); TestStreet(std::vector const & points, StringUtf8Multilang const & name); + void SetHighwayType(std::string const & type) { m_highwayType = type; } + // TestFeature overrides: void Serialize(FeatureBuilder1 & fb) const override; std::string ToDebugString() const override; private: std::vector m_points; + std::string m_highwayType; }; class TestSquare : public TestFeature diff --git a/search/search_integration_tests/processor_test.cpp b/search/search_integration_tests/processor_test.cpp index a2f64e1b63..a2a139f642 100644 --- a/search/search_integration_tests/processor_test.cpp +++ b/search/search_integration_tests/processor_test.cpp @@ -1837,5 +1837,29 @@ UNIT_CLASS_TEST(ProcessorTest, StreetNameLocaleTest) TEST(ResultsMatch("default 3", rules), ()); } } + +UNIT_CLASS_TEST(ProcessorTest, RemoveDuplicatingStreets) +{ + string const countryName = "Wonderland"; + string const streetName = "Октябрьский проспект"; + + // Distance between centers should be less than 5km. + TestStreet street1(vector{m2::PointD(0.0, 0.0), m2::PointD(0.0, 0.01)}, + streetName, "ru"); + street1.SetHighwayType("primary"); + TestStreet street2(vector{m2::PointD(0.0, 0.01), m2::PointD(0.0, 0.02)}, + streetName, "ru"); + street1.SetHighwayType("secondary"); + + auto wonderlandId = BuildCountry(countryName, [&](TestMwmBuilder & builder) { + builder.Add(street1); + builder.Add(street2); + }); + + SetViewport(m2::RectD(-1, -1, 1, 1)); + { + TEST_EQUAL(GetResultsNumber(streetName, "ru"), 1, ()); + } +} } // namespace } // namespace search diff --git a/search/search_tests_support/helpers.cpp b/search/search_tests_support/helpers.cpp index edd9861800..f0b15f14b7 100644 --- a/search/search_tests_support/helpers.cpp +++ b/search/search_tests_support/helpers.cpp @@ -64,6 +64,13 @@ bool SearchTest::ResultMatches(search::Result const & result, Rule const & rule) return tests_support::ResultMatches(m_dataSource, rule, result); } +size_t SearchTest::GetResultsNumber(string const & query, string const & locale) +{ + tests_support::TestSearchRequest request(m_engine, query, locale, Mode::Everywhere, m_viewport); + request.Run(); + return request.Results().size(); +} + unique_ptr SearchTest::MakeRequest( string const & query, string const & locale /* = "en" */) { diff --git a/search/search_tests_support/helpers.hpp b/search/search_tests_support/helpers.hpp index 3ef2335b90..76d5387f2e 100644 --- a/search/search_tests_support/helpers.hpp +++ b/search/search_tests_support/helpers.hpp @@ -43,6 +43,8 @@ public: bool ResultMatches(search::Result const & result, Rule const & rule); + size_t GetResultsNumber(std::string const & query, std::string const & locale); + std::unique_ptr MakeRequest(std::string const & query, std::string const & locale = "en"); -- cgit v1.2.3