aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@yahooinc.com>2024-02-23 09:41:04 +0000
committerHåvard Pettersen <havardpe@yahooinc.com>2024-02-23 12:23:53 +0000
commitfbc08038079b6079fcc12b1f54eba4d59acabe83 (patch)
tree218e277d83da7794b14ce449066df371ff4fc394 /searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp
parent10267c6347197b5e9731d0a1e9169d74608178f7 (diff)
know the in-flow when sorting blueprints
also added the option and tagging mechanic needed to force selected blueprints to be strict even in a non-strict context as well as calculating how much time this saves you.
Diffstat (limited to 'searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp')
-rw-r--r--searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp41
1 files changed, 24 insertions, 17 deletions
diff --git a/searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp b/searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp
index 5009a15e438..8b8b6c1282e 100644
--- a/searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp
+++ b/searchlib/src/tests/queryeval/flow/queryeval_flow_test.cpp
@@ -141,7 +141,7 @@ TEST(FlowTest, full_and_flow) {
{0.4, 0.4, false},
{0.4*0.7, 0.4*0.7, false},
{0.4*0.7*0.2, 0.4*0.7*0.2, false}});
- verify_flow_calc(flow_calc<AndFlow>(strict, 1.0),
+ verify_flow_calc(flow_calc<AndFlow>(strict),
{0.4, 0.7, 0.2}, {1.0, 0.4, 0.4*0.7, 0.4*0.7*0.2});
}
}
@@ -153,7 +153,7 @@ TEST(FlowTest, partial_and_flow) {
{in*0.4, in*0.4, false},
{in*0.4*0.7, in*0.4*0.7, false},
{in*0.4*0.7*0.2, in*0.4*0.7*0.2, false}});
- verify_flow_calc(flow_calc<AndFlow>(false, in),
+ verify_flow_calc(flow_calc<AndFlow>(in),
{0.4, 0.7, 0.2}, {in*1.0, in*0.4, in*0.4*0.7, in*0.4*0.7*0.2});
}
}
@@ -164,14 +164,14 @@ TEST(FlowTest, full_or_flow) {
{0.6, 1.0-0.6, false},
{0.6*0.3, 1.0-0.6*0.3, false},
{0.6*0.3*0.8, 1.0-0.6*0.3*0.8, false}});
- verify_flow_calc(flow_calc<OrFlow>(false, 1.0),
+ verify_flow_calc(flow_calc<OrFlow>(1.0),
{0.4, 0.7, 0.2}, {1.0, 0.6, 0.6*0.3, 0.6*0.3*0.8});
verify_flow(OrFlow(true), {0.4, 0.7, 0.2},
{{1.0, 0.0, true},
{1.0, 1.0-0.6, true},
{1.0, 1.0-0.6*0.3, true},
{1.0, 1.0-0.6*0.3*0.8, true}});
- verify_flow_calc(flow_calc<OrFlow>(true, 1.0),
+ verify_flow_calc(flow_calc<OrFlow>(true),
{0.4, 0.7, 0.2}, {1.0, 1.0, 1.0, 1.0});
}
@@ -182,7 +182,7 @@ TEST(FlowTest, partial_or_flow) {
{in*0.6, 1.0-in*0.6, false},
{in*0.6*0.3, 1.0-in*0.6*0.3, false},
{in*0.6*0.3*0.8, 1.0-in*0.6*0.3*0.8, false}});
- verify_flow_calc(flow_calc<OrFlow>(false, in),
+ verify_flow_calc(flow_calc<OrFlow>(in),
{0.4, 0.7, 0.2}, {in, in*0.6, in*0.6*0.3, in*0.6*0.3*0.8});
}
}
@@ -194,7 +194,7 @@ TEST(FlowTest, full_and_not_flow) {
{0.4, 0.4, false},
{0.4*0.3, 0.4*0.3, false},
{0.4*0.3*0.8, 0.4*0.3*0.8, false}});
- verify_flow_calc(flow_calc<AndNotFlow>(strict, 1.0),
+ verify_flow_calc(flow_calc<AndNotFlow>(strict),
{0.4, 0.7, 0.2}, {1.0, 0.4, 0.4*0.3, 0.4*0.3*0.8});
}
}
@@ -206,45 +206,52 @@ TEST(FlowTest, partial_and_not_flow) {
{in*0.4, in*0.4, false},
{in*0.4*0.3, in*0.4*0.3, false},
{in*0.4*0.3*0.8, in*0.4*0.3*0.8, false}});
- verify_flow_calc(flow_calc<AndNotFlow>(false, in),
+ verify_flow_calc(flow_calc<AndNotFlow>(in),
{0.4, 0.7, 0.2}, {in, in*0.4, in*0.4*0.3, in*0.4*0.3*0.8});
}
}
TEST(FlowTest, full_first_flow_calc) {
for (bool strict: {false, true}) {
- verify_flow_calc(first_flow_calc(strict, 1.0),
+ verify_flow_calc(first_flow_calc(strict),
{0.4, 0.7, 0.2}, {1.0, 0.4, 0.4, 0.4});
}
}
TEST(FlowTest, partial_first_flow_calc) {
for (double in: {1.0, 0.5, 0.25}) {
- verify_flow_calc(first_flow_calc(false, in),
+ verify_flow_calc(first_flow_calc(in),
{0.4, 0.7, 0.2}, {in, in*0.4, in*0.4, in*0.4});
}
}
TEST(FlowTest, full_full_flow_calc) {
for (bool strict: {false, true}) {
- verify_flow_calc(full_flow_calc(strict, 1.0),
+ verify_flow_calc(full_flow_calc(strict),
{0.4, 0.7, 0.2}, {1.0, 1.0, 1.0, 1.0});
}
}
TEST(FlowTest, partial_full_flow_calc) {
for (double in: {1.0, 0.5, 0.25}) {
- verify_flow_calc(full_flow_calc(false, in),
+ verify_flow_calc(full_flow_calc(in),
{0.4, 0.7, 0.2}, {in, in, in, in});
}
}
-TEST(FlowTest, flow_calc_strictness_overrides_rate) {
- EXPECT_EQ(flow_calc<AndFlow>(true, 0.5)(0.5), 1.0);
- EXPECT_EQ(flow_calc<OrFlow>(true, 0.5)(0.5), 1.0);
- EXPECT_EQ(flow_calc<AndNotFlow>(true, 0.5)(0.5), 1.0);
- EXPECT_EQ(first_flow_calc(true, 0.5)(0.5), 1.0);
- EXPECT_EQ(full_flow_calc(true, 0.5)(0.5), 1.0);
+TEST(FlowTest, in_flow_strict_vs_rate_interaction) {
+ EXPECT_EQ(InFlow(true).strict(), true);
+ EXPECT_EQ(InFlow(true).rate(), 1.0);
+ EXPECT_EQ(InFlow(false).strict(), false);
+ EXPECT_EQ(InFlow(false).rate(), 1.0);
+ EXPECT_EQ(InFlow(0.5).strict(), false);
+ EXPECT_EQ(InFlow(0.5).rate(), 0.5);
+ EXPECT_EQ(InFlow(true, 0.5).strict(), true);
+ EXPECT_EQ(InFlow(true, 0.5).rate(), 1.0);
+ EXPECT_EQ(InFlow(false, 0.5).strict(), false);
+ EXPECT_EQ(InFlow(false, 0.5).rate(), 0.5);
+ EXPECT_EQ(InFlow(-1.0).strict(), false);
+ EXPECT_EQ(InFlow(-1.0).rate(), 0.0);
}
TEST(FlowTest, flow_cost) {