aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/fef/rank_program
diff options
context:
space:
mode:
authorHaavard <havardpe@yahoo-inc.com>2017-02-27 13:10:45 +0000
committerHaavard <havardpe@yahoo-inc.com>2017-02-27 13:10:45 +0000
commit6441c92aeec71c9a23b5715bedabedd2d20bb26b (patch)
tree250c0e686083282c983edccf0f51f7fdbc6ffd99 /searchlib/src/tests/fef/rank_program
parent76593b4c8052f0f5f02cc41293fe2db253e48b50 (diff)
verify the lazyness of interpreted ranking expressions
Diffstat (limited to 'searchlib/src/tests/fef/rank_program')
-rw-r--r--searchlib/src/tests/fef/rank_program/rank_program_test.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/searchlib/src/tests/fef/rank_program/rank_program_test.cpp b/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
index 261be51a3c7..1d88f4e92b1 100644
--- a/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
+++ b/searchlib/src/tests/fef/rank_program/rank_program_test.cpp
@@ -322,4 +322,18 @@ TEST_F("require that lazy ranking expression only calculates needed inputs", Fix
EXPECT_EQUAL(f1.track_cnt, 2u);
}
+TEST_F("require that interpreted ranking expressions are always lazy", Fixture()) {
+ f1.lazy_expressions(false);
+ f1.add_expr("rank", "if(docid<10,box(track(ivalue(1))),track(ivalue(2)))");
+ f1.compile();
+ EXPECT_EQUAL(7u, f1.program.num_executors());
+ EXPECT_EQUAL(8u, count_features(f1.program));
+ EXPECT_EQUAL(0u, count_const_features(f1.program));
+ EXPECT_EQUAL(f1.track_cnt, 0u);
+ EXPECT_EQUAL(f1.get(expr_feature("rank"), 5), 1.0);
+ EXPECT_EQUAL(f1.track_cnt, 1u);
+ EXPECT_EQUAL(f1.get(expr_feature("rank"), 15), 2.0);
+ EXPECT_EQUAL(f1.track_cnt, 2u);
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }