diff options
Diffstat (limited to 'streamingvisitors/src/tests/searcher/searcher_test.cpp')
-rw-r--r-- | streamingvisitors/src/tests/searcher/searcher_test.cpp | 65 |
1 files changed, 34 insertions, 31 deletions
diff --git a/streamingvisitors/src/tests/searcher/searcher_test.cpp b/streamingvisitors/src/tests/searcher/searcher_test.cpp index 4492dfac02b..83b84fffa11 100644 --- a/streamingvisitors/src/tests/searcher/searcher_test.cpp +++ b/streamingvisitors/src/tests/searcher/searcher_test.cpp @@ -21,6 +21,7 @@ using namespace document; using search::streaming::HitList; using search::streaming::QueryNodeResultFactory; using search::streaming::QueryTerm; +using search::streaming::Normalizing; using search::streaming::QueryTermList; using TermType = QueryTerm::Type; using namespace vsm; @@ -47,7 +48,7 @@ class String private: const std::string & _str; public: - String(const std::string & str) : _str(str) {} + explicit String(const std::string & str) : _str(str) {} bool operator==(const String & rhs) const { return _str == rhs._str; } @@ -56,14 +57,14 @@ public: class Query { private: - void setupQuery(const StringList & terms) { - for (size_t i = 0; i < terms.size(); ++i) { - ParsedQueryTerm pqt = parseQueryTerm(terms[i]); + void setupQuery(const StringList & terms, Normalizing normalizing) { + for (const auto & term : terms) { + ParsedQueryTerm pqt = parseQueryTerm(term); ParsedTerm pt = parseTerm(pqt.second); - qtv.push_back(std::make_unique<QueryTerm>(eqnr.create(), pt.first, pqt.first.empty() ? "index" : pqt.first, pt.second)); + qtv.push_back(std::make_unique<QueryTerm>(eqnr.create(), pt.first, pqt.first.empty() ? "index" : pqt.first, pt.second, normalizing)); } - for (size_t i = 0; i < qtv.size(); ++i) { - qtl.push_back(qtv[i].get()); + for (const auto & i : qtv) { + qtl.push_back(i.get()); } } public: @@ -72,14 +73,16 @@ public: QueryNodeResultFactory eqnr; std::vector<QueryTerm::UP> qtv; QueryTermList qtl; - Query(const StringList & terms); + + explicit Query(const StringList & terms) : Query(terms, Normalizing::LOWERCASE_AND_FOLD) {} + Query(const StringList & terms, Normalizing normalizing); ~Query(); static ParsedQueryTerm parseQueryTerm(const std::string & queryTerm) { size_t i = queryTerm.find(':'); if (i != std::string::npos) { - return ParsedQueryTerm(queryTerm.substr(0, i), queryTerm.substr(i + 1)); + return {queryTerm.substr(0, i), queryTerm.substr(i + 1)}; } - return ParsedQueryTerm(std::string(), queryTerm); + return {std::string(), queryTerm}; } static ParsedTerm parseTerm(const std::string & term) { if (term[0] == '*' && term[term.size() - 1] == '*') { @@ -94,8 +97,8 @@ public: } }; -Query::Query(const StringList & terms) : eqnr(), qtv(), qtl() { - setupQuery(terms); +Query::Query(const StringList & terms, Normalizing normalizing) : eqnr(), qtv(), qtl() { + setupQuery(terms, normalizing); } Query::~Query() = default; @@ -254,8 +257,8 @@ getFieldValue(const StringList & fv) static ArrayDataType type(*DataType::STRING); ArrayFieldValue afv(type); - for (size_t i = 0; i < fv.size(); ++i) { - afv.add(StringFieldValue(fv[i])); + for (const auto & v : fv) { + afv.add(StringFieldValue(v)); } return afv; } @@ -265,8 +268,8 @@ getFieldValue(const LongList & fv) { static ArrayDataType type(*DataType::LONG); ArrayFieldValue afv(type); - for (size_t i = 0; i < fv.size(); ++i) { - afv.add(LongFieldValue(fv[i])); + for (long v : fv) { + afv.add(LongFieldValue(v)); } return afv; } @@ -276,8 +279,8 @@ getFieldValue(const FloatList & fv) { static ArrayDataType type(*DataType::FLOAT); ArrayFieldValue afv(type); - for (size_t i = 0; i < fv.size(); ++i) { - afv.add(FloatFieldValue(fv[i])); + for (float v : fv) { + afv.add(FloatFieldValue(v)); } return afv; } @@ -286,8 +289,8 @@ bool assertMatchTermSuffix(const std::string & term, const std::string & word) { QueryNodeResultFactory eqnr; - QueryTerm qa(eqnr.create(), term, "index", TermType::WORD); - QueryTerm qb(eqnr.create(), word, "index", TermType::WORD); + QueryTerm qa(eqnr.create(), term, "index", TermType::WORD, Normalizing::LOWERCASE_AND_FOLD); + QueryTerm qb(eqnr.create(), word, "index", TermType::WORD, Normalizing::LOWERCASE_AND_FOLD); const ucs4_t * a; size_t alen = qa.term(a); const ucs4_t * b; @@ -299,8 +302,8 @@ void assertNumeric(FieldSearcher & fs, const StringList & query, const FieldValue & fv, const BoolList & exp) { HitsList hl; - for (size_t i = 0; i < exp.size(); ++i) { - hl.push_back(exp[i] ? Hits().add(0) : Hits()); + for (bool v : exp) { + hl.push_back(v ? Hits().add(0) : Hits()); } assertSearch(fs, query, fv, hl); } @@ -308,7 +311,7 @@ assertNumeric(FieldSearcher & fs, const StringList & query, const FieldValue & f std::vector<QueryTerm::UP> performSearch(FieldSearcher & fs, const StringList & query, const FieldValue & fv) { - Query q(query); + Query q(query, fs.exact() ? Normalizing::LOWERCASE : Normalizing::LOWERCASE_AND_FOLD); // prepare field searcher test::MockFieldSearcherEnv env; @@ -316,7 +319,7 @@ performSearch(FieldSearcher & fs, const StringList & query, const FieldValue & f // setup document SharedFieldPathMap sfim(new FieldPathMapT()); - sfim->push_back(FieldPath()); + sfim->emplace_back(); StorageDocument doc(std::make_unique<document::Document>(), sfim, 1); doc.setField(0, document::FieldValue::UP(fv.clone())); @@ -369,7 +372,7 @@ assertSnippetModifier(const StringList & query, const std::string & fv, const st void assertSnippetModifier(SnippetModifierSetup & setup, const FieldValue & fv, const std::string & exp) { FieldValue::UP mfv = setup.modifier.modify(fv); - const document::LiteralFieldValueB & lfv = static_cast<const document::LiteralFieldValueB &>(*mfv.get()); + const auto & lfv = static_cast<const document::LiteralFieldValueB &>(*mfv.get()); const std::string & actual = lfv.getValue(); EXPECT_EQUAL(actual.size(), exp.size()); EXPECT_EQUAL(actual, exp); @@ -377,11 +380,11 @@ void assertSnippetModifier(SnippetModifierSetup & setup, const FieldValue & fv, void assertQueryTerms(const SnippetModifierManager & man, FieldIdT fId, const StringList & terms) { - if (terms.size() == 0) { - ASSERT_TRUE(man.getModifiers().getModifier(fId) == NULL); + if (terms.empty()) { + ASSERT_TRUE(man.getModifiers().getModifier(fId) == nullptr); return; } - ASSERT_TRUE(man.getModifiers().getModifier(fId) != NULL); + ASSERT_TRUE(man.getModifiers().getModifier(fId) != nullptr); UTF8SubstringSnippetModifier * searcher = (static_cast<SnippetModifier *>(man.getModifiers().getModifier(fId)))->getSearcher().get(); EXPECT_EQUAL(searcher->getQueryTerms().size(), terms.size()); @@ -466,7 +469,7 @@ testStrChrFieldSearcher(StrChrFieldSearcher & fs) TEST("verify correct term parsing") { ASSERT_TRUE(Query::parseQueryTerm("index:term").first == "index"); ASSERT_TRUE(Query::parseQueryTerm("index:term").second == "term"); - ASSERT_TRUE(Query::parseQueryTerm("term").first == ""); + ASSERT_TRUE(Query::parseQueryTerm("term").first.empty()); ASSERT_TRUE(Query::parseQueryTerm("term").second == "term"); ASSERT_TRUE(Query::parseTerm("*substr*").first == "substr"); ASSERT_TRUE(Query::parseTerm("*substr*").second == TermType::SUBSTRINGTERM); @@ -822,13 +825,13 @@ TEST("snippet modifier manager") { Query query(StringList().add("i2:foo").add("i2:*bar*")); man.setup(query.qtl, specMap, indexMap, *env.field_paths, env.query_env); { - SnippetModifier * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(0)); + auto * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(0)); UTF8SubstringSnippetModifier * searcher = sm->getSearcher().get(); EXPECT_EQUAL(sm->getValueBuf().getLength(), 128u); EXPECT_EQUAL(searcher->getModifiedBuf().getLength(), 64u); } { - SnippetModifier * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(1)); + auto * sm = static_cast<SnippetModifier *>(man.getModifiers().getModifier(1)); UTF8SubstringSnippetModifier * searcher = sm->getSearcher().get(); EXPECT_EQUAL(sm->getValueBuf().getLength(), 128u); EXPECT_EQUAL(searcher->getModifiedBuf().getLength(), 64u); |