diff options
author | Geir Storli <geirst@verizonmedia.com> | 2019-11-28 09:56:30 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2019-11-28 10:15:38 +0000 |
commit | 5a41d2e04693c32731e8f051de45dea8846ca94c (patch) | |
tree | 6319c5a9e0db1377442752eee14f726e79670f1d /streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp | |
parent | 9ee2e3ec6ba1ad496c552e7b5a461eeae9fa657e (diff) |
Rename querywrapper.cpp -> querywrapper_test.cpp.
Diffstat (limited to 'streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp')
-rw-r--r-- | streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp new file mode 100644 index 00000000000..ffdddec676e --- /dev/null +++ b/streamingvisitors/src/tests/querywrapper/querywrapper_test.cpp @@ -0,0 +1,108 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/vespalib/testkit/testapp.h> +#include <vespa/searchlib/query/tree/querybuilder.h> +#include <vespa/searchlib/query/tree/simplequery.h> +#include <vespa/searchlib/query/tree/stackdumpcreator.h> +#include <vespa/searchvisitor/querywrapper.h> +#include <iostream> + +using namespace search; +using namespace search::query; +using namespace search::streaming; + +namespace storage { + +class QueryWrapperTest : public vespalib::TestApp +{ +private: + void testQueryWrapper(); + +public: + int Main() override; +}; + +void +QueryWrapperTest::testQueryWrapper() +{ + QueryNodeResultFactory empty; + PhraseQueryNode * null = NULL; + { + QueryBuilder<SimpleQueryNodeTypes> builder; + builder.addAnd(3); + { + builder.addStringTerm("a", "", 0, Weight(0)); + builder.addPhrase(3, "", 0, Weight(0)); + { + builder.addStringTerm("b", "", 0, Weight(0)); + builder.addStringTerm("c", "", 0, Weight(0)); + builder.addStringTerm("d", "", 0, Weight(0)); + } + builder.addStringTerm("e", "", 0, Weight(0)); + } + Node::UP node = builder.build(); + vespalib::string stackDump = StackDumpCreator::create(*node); + Query q(empty, stackDump); + QueryWrapper wrap(q); + QueryWrapper::TermList & tl = wrap.getTermList(); + + QueryTermList terms; + q.getLeafs(terms); + ASSERT_TRUE(tl.size() == 5 && terms.size() == 5); + for (size_t i = 0; i < 5; ++i) { + EXPECT_EQUAL(tl[i].getTerm(), terms[i]); + std::cout << "t[" << i << "]:" << terms[i] << std::endl; + } + + QueryNodeRefList phrases; + q.getPhrases(phrases); + for (size_t i = 0; i < phrases.size(); ++i) { + std::cout << "p[" << i << "]:" << phrases[i] << std::endl; + } + EXPECT_EQUAL(phrases.size(), 1u); + ASSERT_TRUE(phrases.size() == 1); + EXPECT_EQUAL(tl[0].getParent(), null); + EXPECT_EQUAL(tl[1].getParent(), phrases[0]); + EXPECT_EQUAL(tl[2].getParent(), phrases[0]); + EXPECT_EQUAL(tl[3].getParent(), phrases[0]); + EXPECT_EQUAL(tl[4].getParent(), null); + + EXPECT_EQUAL(tl[0].getIndex(), 0u); + EXPECT_EQUAL(tl[1].getIndex(), 0u); + EXPECT_EQUAL(tl[2].getIndex(), 1u); + EXPECT_EQUAL(tl[3].getIndex(), 2u); + EXPECT_EQUAL(tl[4].getIndex(), 0u); + + EXPECT_TRUE(!tl[0].isFirstPhraseTerm()); + EXPECT_TRUE( tl[1].isFirstPhraseTerm()); + EXPECT_TRUE(!tl[2].isFirstPhraseTerm()); + EXPECT_TRUE(!tl[3].isFirstPhraseTerm()); + EXPECT_TRUE(!tl[4].isFirstPhraseTerm()); + + EXPECT_TRUE(!tl[0].isPhraseTerm()); + EXPECT_TRUE( tl[1].isPhraseTerm()); + EXPECT_TRUE( tl[2].isPhraseTerm()); + EXPECT_TRUE( tl[3].isPhraseTerm()); + EXPECT_TRUE(!tl[4].isPhraseTerm()); + + EXPECT_EQUAL(tl[0].getPosAdjust(), 0u); + EXPECT_EQUAL(tl[1].getPosAdjust(), 2u); + EXPECT_EQUAL(tl[2].getPosAdjust(), 2u); + EXPECT_EQUAL(tl[3].getPosAdjust(), 2u); + EXPECT_EQUAL(tl[4].getPosAdjust(), 0u); + } +} + +int +QueryWrapperTest::Main() +{ + TEST_INIT("querywrapper_test"); + + testQueryWrapper(); + + TEST_DONE(); +} + +} // namespace storage + +TEST_APPHOOK(storage::QueryWrapperTest) |