aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 19:01:16 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-08-02 19:01:16 +0200
commit5feb06390d8aee181bbb1add269b793424580285 (patch)
tree7a68a6e49654f03c08cc99a1ea9182bbc0d47f93 /searchlib
parent4f1bcbaee6992f2e53c83c95d883dbbee747215d (diff)
Add failing test for and_not_hits
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp20
-rw-r--r--searchlib/src/vespa/searchlib/test/searchiteratorverifier.h5
2 files changed, 18 insertions, 7 deletions
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
index 971f0e72667..d0072978b2a 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp
@@ -10,11 +10,9 @@
#include <vespa/searchlib/queryeval/andnotsearch.h>
#include <vespa/searchlib/queryeval/orsearch.h>
#include <vespa/searchlib/common/bitvectoriterator.h>
-#include <set>
-namespace search {
-namespace test {
+namespace search::test {
using namespace search::queryeval;
using std::make_unique;
@@ -126,6 +124,8 @@ SearchIteratorVerifier::verify() const {
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(false));
TEST_DO(verify(true));
}
@@ -216,6 +216,19 @@ SearchIteratorVerifier::verifyTermwise(SearchIterator::UP iterator, bool strict,
}
void
+SearchIteratorVerifier::verify_and_hits_into(SearchIterator & iterator, const DocIds & docIds) {
+ BitVector::UP allSet = BitVector::create(1, getDocIdLimit());
+ allSet->notSelf();
+ EXPECT_EQUAL(allSet->countTrueBits(), getDocIdLimit()-1);
+ iterator.initRange(1, getDocIdLimit());
+ iterator.and_hits_into(*allSet, 1);
+ for (size_t i(0); i < docIds.size(); i++) {
+ EXPECT_TRUE(allSet->testBit(docIds[i]));
+ }
+ EXPECT_EQUAL(allSet->countTrueBits(), docIds.size());
+}
+
+void
SearchIteratorVerifier::verify(SearchIterator & iterator, bool strict, const DocIds & docIds)
{
TEST_DO(verify(iterator, Ranges({{1, getDocIdLimit()}}), strict, docIds));
@@ -278,4 +291,3 @@ SearchIteratorVerifier::searchStrict(SearchIterator & it, Range range)
}
}
-}
diff --git a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
index 60cfdc1e399..f4ba6d798bd 100644
--- a/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
+++ b/searchlib/src/vespa/searchlib/test/searchiteratorverifier.h
@@ -5,8 +5,7 @@
#include <vespa/searchlib/fef/termfieldmatchdata.h>
#include <vector>
-namespace search {
-namespace test {
+namespace search::test {
class SearchIteratorVerifier {
public:
@@ -37,6 +36,7 @@ private:
static void verify(SearchIterator & iterator, const DocIds & docIds);
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 DocIds search(SearchIterator & iterator, const Ranges & ranges, bool strict);
static DocIds searchRelaxed(SearchIterator & search, Range range);
static DocIds searchStrict(SearchIterator & search, Range range);
@@ -51,4 +51,3 @@ private:
};
}
-}