summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 19:19:51 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 19:19:51 +0200
commit17820ffb1aa852d864423f5edffc1e6b48909fc5 (patch)
tree072dea86bc1fd65772f50b30889f4b8ed9408c5b /searchlib
parent13abb216a0cb5de33a5bd6fafb3a1a0d5395d70a (diff)
Add conformance tests for get_hits and or_hits_into too.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp26
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.h2
2 files changed, 28 insertions, 0 deletions
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
index d0072978b2a..59b4e2ab64c 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
@@ -126,6 +126,10 @@ void
SearchIteratorVerifier::verifyTermwise() const {
TEST_DO(verify_and_hits_into(*create(false), _docIds));
TEST_DO(verify_and_hits_into(*create(true), _docIds));
+ TEST_DO(verify_or_hits_into(*create(false), _docIds));
+ TEST_DO(verify_or_hits_into(*create(true), _docIds));
+ TEST_DO(verify_get_hits(*create(false), _docIds));
+ TEST_DO(verify_get_hits(*create(true), _docIds));
TEST_DO(verify(false));
TEST_DO(verify(true));
}
@@ -229,6 +233,28 @@ SearchIteratorVerifier::verify_and_hits_into(SearchIterator & iterator, const Do
}
void
+SearchIteratorVerifier::verify_or_hits_into(SearchIterator & iterator, const DocIds & docIds) {
+ BitVector::UP noneSet = BitVector::create(1, getDocIdLimit());
+ EXPECT_EQUAL(noneSet->countTrueBits(), 0u);
+ iterator.initRange(1, getDocIdLimit());
+ iterator.or_hits_into(*noneSet, 1);
+ for (size_t i(0); i < docIds.size(); i++) {
+ EXPECT_TRUE(noneSet->testBit(docIds[i]));
+ }
+ EXPECT_EQUAL(noneSet->countTrueBits(), docIds.size());
+}
+
+void
+SearchIteratorVerifier::verify_get_hits(SearchIterator & iterator, const DocIds & docIds) {
+ iterator.initRange(1, getDocIdLimit());
+ BitVector::UP result = iterator.get_hits(1);
+ for (size_t i(0); i < docIds.size(); i++) {
+ EXPECT_TRUE(result->testBit(docIds[i]));
+ }
+ EXPECT_EQUAL(result->countTrueBits(), docIds.size());
+}
+
+void
SearchIteratorVerifier::verify(SearchIterator & iterator, bool strict, const DocIds & docIds)
{
TEST_DO(verify(iterator, Ranges({{1, getDocIdLimit()}}), strict, docIds));
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
index f4ba6d798bd..3d35731dab1 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
@@ -37,6 +37,8 @@ private:
static void verify(SearchIterator & iterator, bool strict, const DocIds & docIds);
static void verify(SearchIterator & iterator, const Ranges & ranges, bool strict, const DocIds & docIds);
static void verify_and_hits_into(SearchIterator & iterator, const DocIds & docIds);
+ static void verify_or_hits_into(SearchIterator & iterator, const DocIds & docIds);
+ static void verify_get_hits(SearchIterator & iterator, const DocIds & docIds);
static DocIds search(SearchIterator & iterator, const Ranges & ranges, bool strict);
static DocIds searchRelaxed(SearchIterator & search, Range range);
static DocIds searchStrict(SearchIterator & search, Range range);