summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2019-01-08 18:40:04 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2019-01-08 18:40:04 +0000
commit212134219871d29304fc4045d8861401f11ed732 (patch)
tree4266fe8461b28050ba8fc149ff320eeb699d569a
parent05cd49a362873699e03768f3a43fb4413c849d9f (diff)
Test both 'and' and 'or'
-rw-r--r--searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
index d554c3987e3..bce08f1b045 100644
--- a/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
+++ b/searchlib/src/tests/queryeval/multibitvectoriterator/multibitvectoriterator_test.cpp
@@ -512,25 +512,31 @@ Test::testEndGuard(bool invert)
class Verifier : public search::test::SearchIteratorVerifier {
public:
- Verifier(size_t numBv);
+ Verifier(size_t numBv, bool is_and);
~Verifier();
SearchIterator::UP create(bool strict) const override;
private:
+ bool _is_and;
mutable TermFieldMatchData _tfmd;
std::vector<BitVector::UP> _bvs;
};
-Verifier::Verifier(size_t numBv)
- : _bvs()
+Verifier::Verifier(size_t numBv, bool is_and)
+ : _is_and(is_and),
+ _bvs()
{
for (size_t i(0); i < numBv; i++) {
_bvs.push_back(BitVector::create(getDocIdLimit()));
}
- for (auto & bv : _bvs) {
- for (uint32_t docId: getExpectedDocIds()) {
- bv->setBit(docId);
+ for (uint32_t docId: getExpectedDocIds()) {
+ if (_is_and) {
+ for (auto & bv : _bvs) {
+ bv->setBit(docId);
+ }
+ } else {
+ _bvs[docId%_bvs.size()]->setBit(docId);
}
}
}
@@ -542,14 +548,16 @@ Verifier::create(bool strict) const {
for (const auto & bv : _bvs) {
bvs.push_back(BitVectorIterator::create(bv.get(), getDocIdLimit(), _tfmd, strict, false).release());
}
- SearchIterator::UP iter(AndSearch::create(bvs, strict));
+ SearchIterator::UP iter(_is_and ? AndSearch::create(bvs, strict) : OrSearch::create(bvs, strict));
return MultiBitVectorIteratorBase::optimize(std::move(iter));
}
void Test::testIteratorConformance() {
- for (size_t i(1); i < 6; i++) {
- Verifier searchIteratorVerifier(i);
- searchIteratorVerifier.verify();
+ for (bool is_and : {false, true}) {
+ for (size_t i(1); i < 6; i++) {
+ Verifier searchIteratorVerifier(i, is_and);
+ searchIteratorVerifier.verify();
+ }
}
}