summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/attribute/bitvector/bitvector_test.cpp')
-rw-r--r--searchlib/src/tests/attribute/bitvector/bitvector_test.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
index c00ab1270e3..abc9d3aa975 100644
--- a/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
+++ b/searchlib/src/tests/attribute/bitvector/bitvector_test.cpp
@@ -612,30 +612,47 @@ TEST_F("Test bitvectors with weighted set value string", BitVectorTest)
class Verifier : public search::test::SearchIteratorVerifier {
public:
- Verifier();
+ Verifier(bool inverted);
~Verifier();
SearchIterator::UP create(bool strict) const override {
- return BitVectorIterator::create(_bv.get(), getDocIdLimit(), _tfmd, strict);
+ return _inverted
+ ? BitVectorIterator::createInverse(_bv.get(), getDocIdLimit(), _tfmd, strict)
+ : BitVectorIterator::create(_bv.get(), getDocIdLimit(), _tfmd, strict);
}
private:
+ bool _inverted;
mutable TermFieldMatchData _tfmd;
BitVector::UP _bv;
};
-Verifier::Verifier()
- : _bv(BitVector::create(getDocIdLimit()))
+Verifier::Verifier(bool inverted)
+ : _inverted(inverted),
+ _bv(BitVector::create(getDocIdLimit()))
{
+ if (inverted) {
+ _bv->setInterval(0, getDocIdLimit());
+ }
for (uint32_t docId: getExpectedDocIds()) {
- _bv->setBit(docId);
+ if (inverted) {
+ _bv->clearBit(docId);
+ } else {
+ _bv->setBit(docId);
+ }
}
}
-Verifier::~Verifier() {}
+Verifier::~Verifier() = default;
TEST("Test that bitvector iterators adheres to SearchIterator requirements") {
- Verifier searchIteratorVerifier;
- searchIteratorVerifier.verify();
+ {
+ Verifier searchIteratorVerifier(false);
+ searchIteratorVerifier.verify();
+ }
+ {
+ Verifier searchIteratorVerifier(true);
+ searchIteratorVerifier.verify();
+ }
}