diff options
Diffstat (limited to 'searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp')
-rw-r--r-- | searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp index eb222518710..2e1a28402a1 100644 --- a/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp +++ b/searchcore/src/tests/proton/matching/unpacking_iterators_optimizer/unpacking_iterators_optimizer_test.cpp @@ -254,12 +254,34 @@ std::string split_query_tree_dump = " Term a cheap\n" " Term b cheap\n" " Term c cheap\n"; +std::string split_query_tree_dump_always_expensive = + "And 7\n" + " Or 3\n" + " Term t2\n" + " Phrase 3 expensive\n" + " Term a\n" + " Term b\n" + " Term c\n" + " Term x1\n" + " Term x2\n" + " Phrase 3 expensive\n" + " Term a\n" + " Term b\n" + " Term c\n" + " Term t1\n" + " Term a cheap\n" + " Term b cheap\n" + " Term c cheap\n"; #endif //----------------------------------------------------------------------------- Node::UP optimize(Node::UP root, bool white_list) { - return UnpackingIteratorsOptimizer::optimize(std::move(root), white_list); + return UnpackingIteratorsOptimizer::optimize(std::move(root), white_list, false); +} + +Node::UP optimize(Node::UP root, bool white_list, bool always_mark_phrase_expensive) { + return UnpackingIteratorsOptimizer::optimize(std::move(root), white_list, always_mark_phrase_expensive); } TEST(UnpackingIteratorsOptimizerTest, require_that_root_phrase_node_can_be_left_alone) { @@ -301,4 +323,14 @@ TEST(UnpackingIteratorsOptimizerTest, require_that_query_tree_can_be_split) { EXPECT_EQ(actual2, expect); } +TEST(UnpackingIteratorsOptimizerTest, require_that_query_tree_can_be_split_always) { + std::string actual1 = dump_query(*optimize(make_query_tree(), false, false)); + std::string actual2 = dump_query(*optimize(make_query_tree(), true, false)); + std::string actual3 = dump_query(*optimize(make_query_tree(), true, true)); + std::string expect = split_query_tree_dump; + EXPECT_EQ(actual1, expect); + EXPECT_EQ(actual2, expect); + EXPECT_EQ(actual3, split_query_tree_dump_always_expensive); +} + GTEST_MAIN_RUN_ALL_TESTS() |