diff options
Diffstat (limited to 'searchlib/src/tests/query/querybuilder_test.cpp')
-rw-r--r-- | searchlib/src/tests/query/querybuilder_test.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/searchlib/src/tests/query/querybuilder_test.cpp b/searchlib/src/tests/query/querybuilder_test.cpp index 2ea566027c4..5b410879fa0 100644 --- a/searchlib/src/tests/query/querybuilder_test.cpp +++ b/searchlib/src/tests/query/querybuilder_test.cpp @@ -7,6 +7,8 @@ #include <vespa/searchlib/query/tree/querybuilder.h> #include <vespa/searchlib/query/tree/simplequery.h> #include <vespa/searchlib/query/tree/stackdumpcreator.h> +#include <vespa/searchlib/query/query_term_decoder.h> +#include <vespa/searchlib/query/query_term_simple.h> #include <vespa/vespalib/testkit/test_kit.h> #include <vespa/log/log.h> @@ -115,7 +117,7 @@ Node::UP createQueryTree() { builder.add_true_node(); builder.add_false_node(); } - builder.addFuzzyTerm(str[5], view[5], id[5], weight[5]); + builder.addFuzzyTerm(str[5], view[5], id[5], weight[5], 3, 1); } Node::UP node = builder.build(); ASSERT_TRUE(node.get()); @@ -311,6 +313,8 @@ void checkQueryTreeTypes(Node *node) { auto* fuzzy_term = as_node<FuzzyTerm>(and_node->getChildren()[12]); EXPECT_TRUE(checkTerm(fuzzy_term, str[5], view[5], id[5], weight[5])); + EXPECT_EQUAL(3u, fuzzy_term->getMaxEditDistance()); + EXPECT_EQUAL(1u, fuzzy_term->getPrefixLength()); } struct AbstractTypes { @@ -434,8 +438,9 @@ struct MyNearestNeighborTerm : NearestNeighborTerm { struct MyTrue : TrueQueryNode {}; struct MyFalse : FalseQueryNode {}; struct MyFuzzyTerm : FuzzyTerm { - MyFuzzyTerm(const Type &t, const string &f, int32_t i, Weight w) - : FuzzyTerm(t, f, i, w) { + MyFuzzyTerm(const Type &t, const string &f, int32_t i, Weight w, + uint32_t m, uint32_t p) + : FuzzyTerm(t, f, i, w, m, p) { } }; @@ -578,6 +583,7 @@ TEST("require that Query Tree Creator Can Replicate Queries") { TEST("require that Query Tree Creator Can Create Queries From Stack") { Node::UP node = createQueryTree<MyQueryNodeTypes>(); string stackDump = StackDumpCreator::create(*node); + SimpleQueryStackDumpIterator iterator(stackDump); Node::UP new_node = QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator); @@ -618,6 +624,26 @@ TEST("require that All Range Syntaxes Work") { EXPECT_TRUE(range2 == range_term->getTerm()); } +TEST("require that fuzzy node can be created") { + QueryBuilder<SimpleQueryNodeTypes> builder; + builder.addFuzzyTerm("term", "view", 0, Weight(0), 3, 1); + Node::UP node = builder.build(); + + string stackDump = StackDumpCreator::create(*node); + { + SimpleQueryStackDumpIterator iterator(stackDump); + Node::UP new_node = QueryTreeCreator<SimpleQueryNodeTypes>::create(iterator); + FuzzyTerm *fuzzy_node = as_node<FuzzyTerm>(new_node.get()); + EXPECT_EQUAL(3u, fuzzy_node->getMaxEditDistance()); + EXPECT_EQUAL(1u, fuzzy_node->getPrefixLength()); + } + { + search::QueryTermSimple::UP queryTermSimple = search::QueryTermDecoder::decodeTerm(stackDump); + EXPECT_EQUAL(3u, queryTermSimple->getFuzzyMaxEditDistance()); + EXPECT_EQUAL(1u, queryTermSimple->getFuzzyPrefixLength()); + } +} + TEST("require that empty intermediate node can be added") { QueryBuilder<SimpleQueryNodeTypes> builder; builder.addAnd(0); |