aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-02-14 10:54:44 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-02-14 10:54:44 +0100
commit759a6e8a3405d5e0c4808b659895336318ef01c0 (patch)
treeab00616fd0db5ffdd0c7c24310d6b4166d458eb9 /searchlib
parentba105abb62d920b61b0e2a8394f9eef21491c418 (diff)
Fork into single/multiple tests.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp46
-rw-r--r--searchlib/src/vespa/searchlib/fef/matchdata.cpp1
2 files changed, 40 insertions, 7 deletions
diff --git a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
index b3989065f07..0abe6b4d457 100644
--- a/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
+++ b/searchlib/src/tests/queryeval/dot_product/dot_product_test.cpp
@@ -6,6 +6,7 @@
#include <vespa/searchlib/query/tree/simplequery.h>
#include <vespa/searchlib/queryeval/field_spec.h>
#include <vespa/searchlib/queryeval/blueprint.h>
+#include <vespa/searchlib/queryeval/emptysearch.h>
#include <vespa/searchlib/queryeval/fake_result.h>
#include <vespa/searchlib/queryeval/fake_searchable.h>
#include <vespa/searchlib/queryeval/fake_requestcontext.h>
@@ -94,14 +95,21 @@ struct MockFixture {
MockSearch *mock;
TermFieldMatchData tfmd;
std::unique_ptr<SearchIterator> search;
- MockFixture(uint32_t initial) : mock(0), tfmd(), search() {
- std::vector<SearchIterator*> children;
+ MockFixture(uint32_t initial) :
+ MockFixture(initial, {new EmptySearch()})
+ { }
+ MockFixture(uint32_t initial, std::vector<SearchIterator *> children) : mock(0), tfmd(), search() {
std::vector<TermFieldMatchData*> childMatch;
std::vector<int32_t> weights;
- MatchData::UP md(MatchData::makeTestInstance(1, 1));
+ const size_t numChildren(children.size()+1);
+ MatchData::UP md(MatchData::makeTestInstance(numChildren, numChildren));
+ for (size_t i(0); i < children.size(); i++) {
+ childMatch.push_back(md->resolveTermField(i));
+ weights.push_back(1);
+ }
mock = new MockSearch(initial);
+ childMatch.push_back(md->resolveTermField(children.size()));
children.push_back(mock);
- childMatch.push_back(md->resolveTermField(0));
weights.push_back(1);
search = DotProductSearch::create(children, tfmd, childMatch, weights, std::move(md));
}
@@ -139,15 +147,25 @@ TEST("test Multi") {
EXPECT_EQUAL(expect, ws.search(index, "multi-field", false));
}
-TEST_F("test Eager Empty Child", MockFixture(search::endDocId)) {
+TEST_F("test Eager Single Empty Child", MockFixture(search::endDocId, {})) {
+ MockSearch *mock = f1.mock;
+ SearchIterator &search = *f1.search;
+ search.initFullRange();
+ EXPECT_TRUE(search.isAtEnd());
+ EXPECT_EQUAL(0, mock->seekCnt);
+}
+
+TEST_F("test Multiple Eager Empty Children", MockFixture(search::endDocId)) {
MockSearch *mock = f1.mock;
SearchIterator &search = *f1.search;
search.initFullRange();
+ EXPECT_EQUAL(search.beginId(), search.getDocId());
+ EXPECT_TRUE(!search.seek(1));
EXPECT_TRUE(search.isAtEnd());
EXPECT_EQUAL(0, mock->seekCnt);
}
-TEST_F("test Eager Matching Child", MockFixture(5)) {
+TEST_F("test Eager Single Matching Child", MockFixture(5, {})) {
MockSearch *mock = f1.mock;
SearchIterator &search = *f1.search;
search.initFullRange();
@@ -163,6 +181,22 @@ TEST_F("test Eager Matching Child", MockFixture(5)) {
EXPECT_EQUAL(1, mock->seekCnt);
}
+TEST_F("test Eager Matching Children", MockFixture(5)) {
+ MockSearch *mock = f1.mock;
+ SearchIterator &search = *f1.search;
+ search.initFullRange();
+ EXPECT_EQUAL(search.beginId(), search.getDocId());
+ EXPECT_TRUE(!search.seek(3));
+ EXPECT_EQUAL(5u, search.getDocId());
+ EXPECT_EQUAL(0, mock->seekCnt);
+ EXPECT_TRUE(search.seek(5));
+ EXPECT_EQUAL(5u, search.getDocId());
+ EXPECT_EQUAL(0, mock->seekCnt);
+ EXPECT_TRUE(!search.seek(7));
+ EXPECT_TRUE(search.isAtEnd());
+ EXPECT_EQUAL(1, mock->seekCnt);
+}
+
class IteratorChildrenVerifier : public search::test::IteratorChildrenVerifier {
private:
SearchIterator::UP create(const std::vector<SearchIterator*> &children) const override {
diff --git a/searchlib/src/vespa/searchlib/fef/matchdata.cpp b/searchlib/src/vespa/searchlib/fef/matchdata.cpp
index eeff402547b..618babaf90f 100644
--- a/searchlib/src/vespa/searchlib/fef/matchdata.cpp
+++ b/searchlib/src/vespa/searchlib/fef/matchdata.cpp
@@ -1,6 +1,5 @@
// 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 "matchdata.h"
namespace search {