Files
comaps/search/search_tests/keyword_lang_matcher_test.cpp
Konstantin Pastbin e3e4a1985a Organic Maps sources as of 02.04.2025 (fad26bbf22ac3da75e01e62aa01e5c8e11861005)
To expand with full Organic Maps and Maps.ME commits history run:
  git remote add om-historic [om-historic.git repo url]
  git fetch --tags om-historic
  git replace squashed-history historic-commits
2025-05-08 21:10:51 +07:00

62 lines
1.9 KiB
C++

#include "testing/testing.hpp"
#include "search/keyword_lang_matcher.hpp"
#include "search/string_utils.hpp"
#include <vector>
namespace keyword_lang_matcher_test
{
using namespace std;
using search::KeywordLangMatcher;
using Score = search::KeywordLangMatcher::Score;
enum
{
LANG_UNKNOWN = 1,
LANG_SOME = 2,
LANG_SOME_OTHER = 3,
LANG_HIGH_PRIORITY = 10
};
KeywordLangMatcher CreateMatcher(string const & query)
{
size_t const kNumTestTiers = 4;
KeywordLangMatcher matcher(kNumTestTiers);
{
vector<vector<int8_t>> langPriorities(kNumTestTiers);
langPriorities[0].push_back(LANG_HIGH_PRIORITY);
// langPriorities[1] is intentionally left empty.
langPriorities[2].push_back(LANG_SOME);
langPriorities[2].push_back(LANG_SOME_OTHER);
// langPriorities[3] is intentionally left empty.
for (size_t i = 0; i < langPriorities.size(); ++i)
matcher.SetLanguages(i /* tier */, std::move(langPriorities[i]));
}
matcher.SetKeywords(search::MakeQueryString(query));
return matcher;
}
UNIT_TEST(KeywordMatcher_LanguageMatchIsUsedWhenTokenMatchIsTheSame)
{
char const * query = "test";
char const * name = "test";
KeywordLangMatcher matcher = CreateMatcher(query);
TEST(matcher.CalcScore(LANG_UNKNOWN, name) < matcher.CalcScore(LANG_SOME, name), ());
TEST(matcher.CalcScore(LANG_UNKNOWN, name) < matcher.CalcScore(LANG_SOME_OTHER, name), ());
TEST(matcher.CalcScore(LANG_UNKNOWN, name) < matcher.CalcScore(LANG_HIGH_PRIORITY, name), ());
TEST(!(matcher.CalcScore(LANG_SOME, name) < matcher.CalcScore(LANG_SOME_OTHER, name)), ());
TEST(!(matcher.CalcScore(LANG_SOME_OTHER, name) < matcher.CalcScore(LANG_SOME, name)), ());
TEST(matcher.CalcScore(LANG_SOME, name) < matcher.CalcScore(LANG_HIGH_PRIORITY, name), ());
TEST(matcher.CalcScore(LANG_SOME_OTHER, name) < matcher.CalcScore(LANG_HIGH_PRIORITY, name), ());
}
} // namespace keyword_lang_matcher_test