diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-02 19:01:16 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-08-02 19:01:16 +0200 |
commit | 5feb06390d8aee181bbb1add269b793424580285 (patch) | |
tree | 7a68a6e49654f03c08cc99a1ea9182bbc0d47f93 /searchlib | |
parent | 4f1bcbaee6992f2e53c83c95d883dbbee747215d (diff) |
Add failing test for and_not_hits
Diffstat (limited to 'searchlib')
-rw-r--r-- | searchlib/src/vespa/searchlib/test/searchiteratorverifier.cpp | 20 | ||||
-rw-r--r-- | searchlib/src/vespa/searchlib/test/searchiteratorverifier.h | 5 |
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: }; } -} |