From 267c8909dedff7dd4beb2b8cd5867f639582d6d1 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 18 Dec 2018 21:34:13 +0000 Subject: Add test for inverted bitvector iterator. --- .../tests/attribute/bitvector/bitvector_test.cpp | 33 ++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'searchlib/src/tests') 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(); + } } -- cgit v1.2.3