diff options
Diffstat (limited to 'searchlib/src/tests/queryeval')
-rw-r--r-- | searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp index eb6e49747a1..802aee8dee0 100644 --- a/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp +++ b/searchlib/src/tests/queryeval/blueprint/intermediate_blueprints_test.cpp @@ -1453,4 +1453,20 @@ TEST("require that intermediate cost tier is minimum cost tier of children") { EXPECT_EQUAL(bp2->getState().cost_tier(), 2u); } +void verify_or_est(const std::vector<Blueprint::HitEstimate> &child_estimates, Blueprint::HitEstimate expect) { + OrBlueprint my_or; + my_or.setDocIdLimit(32); + auto my_est = my_or.combine(child_estimates); + EXPECT_EQUAL(my_est.empty, expect.empty); + EXPECT_EQUAL(my_est.estHits, expect.estHits); +} + +TEST("require that OR blueprint use saturated sum as estimate") { + TEST_DO(verify_or_est({{0, true},{0, true},{0, true}}, {0, true})); + TEST_DO(verify_or_est({{0, true},{0, false},{0, true}}, {0, false})); + TEST_DO(verify_or_est({{4, false},{6, false},{5, false}}, {15, false})); + TEST_DO(verify_or_est({{5, false},{20, false},{10, false}}, {32, false})); + TEST_DO(verify_or_est({{100, false},{300, false},{200, false}}, {300, false})); +} + TEST_MAIN() { TEST_DEBUG("lhs.out", "rhs.out"); TEST_RUN_ALL(); } |