diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-25 16:08:54 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2017-01-25 16:08:54 +0100 |
commit | ccf3cdab8ff4557bcb98485dbfe2512f6df345b6 (patch) | |
tree | 52404660b7a58ad3ddaa02160e9a7a85159d4f2c /searchlib/src/tests | |
parent | b4be0edba445fff7ffc446e090904b546424a144 (diff) |
Ensure that we detect out of order collection also after passing the array limit.
Diffstat (limited to 'searchlib/src/tests')
-rw-r--r-- | searchlib/src/tests/hitcollector/hitcollector_test.cpp | 23 |
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(); } |