diff --git a/search/search_tests/CMakeLists.txt b/search/search_tests/CMakeLists.txt index b5cb7eef37..f03f075bee 100644 --- a/search/search_tests/CMakeLists.txt +++ b/search/search_tests/CMakeLists.txt @@ -20,6 +20,7 @@ set( point_rect_matcher_tests.cpp query_saver_tests.cpp ranking_tests.cpp + results_tests.cpp region_info_getter_tests.cpp segment_tree_tests.cpp string_match_test.cpp diff --git a/search/search_tests/results_tests.cpp b/search/search_tests/results_tests.cpp new file mode 100644 index 0000000000..21d092ffd0 --- /dev/null +++ b/search/search_tests/results_tests.cpp @@ -0,0 +1,37 @@ +#include "testing/testing.hpp" + +#include "search/result.hpp" + +#include + +namespace search +{ +UNIT_TEST(Sorting_Test) +{ + Results r; + MwmSet::MwmId id; + for (uint32_t i = 5; i != 0; --i) + { + r.AddResultNoChecks({{id, i}, {} /* pt */, {} /* str */, {} /* address */, + {} /* featureTypeName */, {} /* featureType */, {} /* metadata */}); + } + + for (auto it = r.begin(); it != r.end(); ++it) + { + auto const & result = *it; + TEST_EQUAL(result.GetFeatureID().m_index, std::distance(it, r.end()), ()); + TEST_EQUAL(result.GetPositionInResults(), std::distance(r.begin(), it), ()); + } + + r.SortBy([](auto const & lhs, auto const & rhs) { + return lhs.GetFeatureID().m_index < rhs.GetFeatureID().m_index; + }); + + for (auto it = r.begin(); it != r.end(); ++it) + { + auto const & result = *it; + TEST_EQUAL(result.GetFeatureID().m_index, std::distance(r.begin(), it) + 1, ()); + TEST_EQUAL(result.GetPositionInResults(), std::distance(r.begin(), it), ()); + } +} +} // namespace search