diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-07-06 15:52:54 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-07-06 15:52:54 +0000 |
commit | be7212aef13750d2fc051ab678e67def8a902676 (patch) | |
tree | 29965f633da15855053e8035a1ca778e1a76062a /searchlib/src/tests/attribute/postinglistattribute | |
parent | 8caf86c20c8a3623dd738a619689521864dc5a8a (diff) |
Enure that iteration works fine too.
Diffstat (limited to 'searchlib/src/tests/attribute/postinglistattribute')
-rw-r--r-- | searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp index 9d87f21c4af..bf2aa83c428 100644 --- a/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp +++ b/searchlib/src/tests/attribute/postinglistattribute/postinglistattribute_test.cpp @@ -158,7 +158,7 @@ private: void checkPostingList(const VectorType & vec, const std::vector<BufferType> & values, const Range & range); template <typename BufferType> - void checkSearch(const AttributeVector & vec, const BufferType & term, uint32_t docBegin, uint32_t docEnd); + void checkSearch(const AttributeVector & vec, const BufferType & term, uint32_t numHits, uint32_t docBegin, uint32_t docEnd); template <typename VectorType, typename BufferType> void testPostingList(const AttributePtr & ptr1, const AttributePtr & ptr2, @@ -498,27 +498,39 @@ PostingListAttributeTest::checkPostingList(const VectorType & vec, const std::ve postings = postingList.begin(itr.getData()); uint32_t doc = docBegin; + uint32_t numHits(0); for (; postings.valid(); ++postings) { EXPECT_EQUAL(doc++, postings.getKey()); + numHits++; } EXPECT_EQUAL(doc, docEnd); - checkSearch(vec, values[i], docBegin, docEnd); + checkSearch(vec, values[i], numHits, docBegin, docEnd); } } template <typename BufferType> void -PostingListAttributeTest::checkSearch(const AttributeVector & vec, const BufferType & term, uint32_t docBegin, uint32_t docEnd) +PostingListAttributeTest::checkSearch(const AttributeVector & vec, const BufferType & term, uint32_t numHits, uint32_t docBegin, uint32_t docEnd) { SearchContextPtr sc = getSearch(vec, term, false); EXPECT_FALSE( ! sc ); + sc->fetchPostings(true); size_t approx = sc->approximateHits(); - EXPECT_EQUAL(7u, approx); + EXPECT_EQUAL(numHits, approx); + //if (numHits != approx) { + // std::cerr << "Term = " << term << std::endl; + //} + if (docBegin == 0) { + // Approximation does not know about the special 0 + // But the iterator does.... + numHits--; + docBegin++; + } TermFieldMatchData tfmd; - auto it = sc->createFilterIterator(&tfmd, true); + auto it = sc->createIterator(&tfmd, true); it->initFullRange(); - EXPECT_EQUAL(7u, it->getDocId()); + EXPECT_TRUE(it->seekFirst(docBegin)); EXPECT_EQUAL(docBegin, it->getDocId()); size_t hits(0); uint32_t lastDocId = it->getDocId(); @@ -527,8 +539,9 @@ PostingListAttributeTest::checkSearch(const AttributeVector & vec, const BufferT it->seek(lastDocId+1); hits++; } + EXPECT_EQUAL(numHits, hits); EXPECT_GREATER_EQUAL(approx, hits); - EXPECT_EQUAL(docEnd, lastDocId); + EXPECT_EQUAL(docEnd, lastDocId+1); } template <typename VectorType, typename BufferType> @@ -670,9 +683,7 @@ PostingListAttributeTest::testPostingList(bool enableBitVector) std::vector<const char *> charValues; values.reserve(numValues); charValues.reserve(numValues); - values.push_back(""); - charValues.push_back(values.back().c_str()); - for (uint32_t i = 1; i < numValues; ++i) { + for (uint32_t i = 0; i < numValues; ++i) { vespalib::asciistream ss; ss << "string" << i; values.push_back(ss.str()); |