summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/hitcollector
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-01-25 16:08:54 +0100
committerHenning Baldersheim <balder@yahoo-inc.com>2017-01-25 16:08:54 +0100
commitccf3cdab8ff4557bcb98485dbfe2512f6df345b6 (patch)
tree52404660b7a58ad3ddaa02160e9a7a85159d4f2c /searchlib/src/tests/hitcollector
parentb4be0edba445fff7ffc446e090904b546424a144 (diff)
Ensure that we detect out of order collection also after passing the array limit.
Diffstat (limited to 'searchlib/src/tests/hitcollector')
-rw-r--r--searchlib/src/tests/hitcollector/hitcollector_test.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/searchlib/src/tests/hitcollector/hitcollector_test.cpp b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
index c76c9d16160..edb2ecdcaaa 100644
--- a/searchlib/src/tests/hitcollector/hitcollector_test.cpp
+++ b/searchlib/src/tests/hitcollector/hitcollector_test.cpp
@@ -509,4 +509,27 @@ TEST("require that hits can be added out of order when passing array limit") {
TEST_DO(checkResult(*rs.get(), nullptr));
}
+TEST("require that hits can be added out of order only after passing array limit") {
+ HitCollector hc(10000, 100, 10);
+ std::vector<RankedHit> expRh;
+ // produce expected result in normal order
+ const size_t numHits = 150;
+ for (uint32_t i = 0; i < numHits; ++i) {
+ expRh.push_back(RankedHit());
+ expRh.back()._docId = i;
+ expRh.back()._rankValue = (i < 50) ? 0 : (i + 100);
+ }
+ // add results in reverse order
+ const uint32_t numInOrder = numHits - 30;
+ for (uint32_t i = 0; i < numInOrder; i++) {
+ hc.addHit(i, i + 100);
+ }
+ for (uint32_t i = numHits; i-- > numInOrder; ) {
+ hc.addHit(i, i + 100);
+ }
+ std::unique_ptr<ResultSet> rs = hc.getResultSet();
+ TEST_DO(checkResult(*rs.get(), expRh));
+ TEST_DO(checkResult(*rs.get(), nullptr));
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }