aboutsummaryrefslogtreecommitdiffstats
path: root/streamingvisitors/src/tests/querywrapper
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2016-06-15 23:09:44 +0200
commit72231250ed81e10d66bfe70701e64fa5fe50f712 (patch)
tree2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /streamingvisitors/src/tests/querywrapper
Publish
Diffstat (limited to 'streamingvisitors/src/tests/querywrapper')
-rw-r--r--streamingvisitors/src/tests/querywrapper/.gitignore4
-rw-r--r--streamingvisitors/src/tests/querywrapper/CMakeLists.txt8
-rw-r--r--streamingvisitors/src/tests/querywrapper/DESC1
-rw-r--r--streamingvisitors/src/tests/querywrapper/FILES1
-rw-r--r--streamingvisitors/src/tests/querywrapper/querywrapper.cpp108
5 files changed, 122 insertions, 0 deletions
diff --git a/streamingvisitors/src/tests/querywrapper/.gitignore b/streamingvisitors/src/tests/querywrapper/.gitignore
new file mode 100644
index 00000000000..3c8a4b1c9f8
--- /dev/null
+++ b/streamingvisitors/src/tests/querywrapper/.gitignore
@@ -0,0 +1,4 @@
+.depend
+Makefile
+querywrapper_test
+streamingvisitors_querywrapper_test_app
diff --git a/streamingvisitors/src/tests/querywrapper/CMakeLists.txt b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
new file mode 100644
index 00000000000..501b1eee1a9
--- /dev/null
+++ b/streamingvisitors/src/tests/querywrapper/CMakeLists.txt
@@ -0,0 +1,8 @@
+# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+vespa_add_executable(streamingvisitors_querywrapper_test_app
+ SOURCES
+ querywrapper.cpp
+ DEPENDS
+ streamingvisitors_searchvisitor
+)
+vespa_add_test(NAME streamingvisitors_querywrapper_test_app COMMAND streamingvisitors_querywrapper_test_app)
diff --git a/streamingvisitors/src/tests/querywrapper/DESC b/streamingvisitors/src/tests/querywrapper/DESC
new file mode 100644
index 00000000000..dfdd9d55a8e
--- /dev/null
+++ b/streamingvisitors/src/tests/querywrapper/DESC
@@ -0,0 +1 @@
+Test of the query wrapper used by the rank processor.
diff --git a/streamingvisitors/src/tests/querywrapper/FILES b/streamingvisitors/src/tests/querywrapper/FILES
new file mode 100644
index 00000000000..91138d25b2e
--- /dev/null
+++ b/streamingvisitors/src/tests/querywrapper/FILES
@@ -0,0 +1 @@
+querywrapper.cpp
diff --git a/streamingvisitors/src/tests/querywrapper/querywrapper.cpp b/streamingvisitors/src/tests/querywrapper/querywrapper.cpp
new file mode 100644
index 00000000000..b717962d920
--- /dev/null
+++ b/streamingvisitors/src/tests/querywrapper/querywrapper.cpp
@@ -0,0 +1,108 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+#include <vespa/fastos/fastos.h>
+#include <vespa/vespalib/testkit/testapp.h>
+#include <iostream>
+#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>
+
+using namespace search;
+using namespace search::query;
+
+namespace storage {
+
+class QueryWrapperTest : public vespalib::TestApp
+{
+private:
+ void testQueryWrapper();
+
+public:
+ int Main();
+};
+
+void
+QueryWrapperTest::testQueryWrapper()
+{
+ EmptyQueryNodeResult 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)