aboutsummaryrefslogtreecommitdiffstats
path: root/searchsummary/src/tests
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2022-09-21 15:54:23 +0200
committerTor Egge <Tor.Egge@online.no>2022-09-21 15:54:23 +0200
commit565b10f7bba3be0009e186591eacfa280122caa9 (patch)
treeabc7e91862c8d9ee38dd9a96c3098c6b2c175f2f /searchsummary/src/tests
parent587f3301e1bf7d896a91c5cd5e86b55b20477e2b (diff)
Reduce special handling of struct fields.
Diffstat (limited to 'searchsummary/src/tests')
-rw-r--r--searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp b/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
index 49be0caefc1..fb902eda080 100644
--- a/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
+++ b/searchsummary/src/tests/docsummary/slime_filler/slime_filler_test.cpp
@@ -183,9 +183,10 @@ protected:
void expect_insert_filtered(const vespalib::string& exp, const FieldValue& fv, const std::vector<uint32_t>& matching_elems);
void expect_insert(const vespalib::string& exp, const FieldValue& fv, SlimeFillerFilter& filter);
void expect_insert_callback(const std::vector<vespalib::string>& exp, const FieldValue& fv);
- // Following 3 member functions tests static member functions in SlimeFiller
+ // Following 4 member functions tests static member functions in SlimeFiller
void expect_insert_summary_field(const vespalib::string& exp, const FieldValue& fv);
void expect_insert_summary_field_with_filter(const vespalib::string& exp, const FieldValue& fv, const std::vector<uint32_t>& matching_elems);
+ void expect_insert_summary_field_with_field_filter(const vespalib::string& exp, const FieldValue& fv, const SlimeFillerFilter* filter);
void expect_insert_juniper_field(const std::vector<vespalib::string>& exp, const vespalib::string& exp_slime, const FieldValue& fv);
};
@@ -346,6 +347,16 @@ SlimeFillerTest::expect_insert_summary_field_with_filter(const vespalib::string&
}
void
+SlimeFillerTest::expect_insert_summary_field_with_field_filter(const vespalib::string& exp, const FieldValue& fv, const SlimeFillerFilter* filter)
+{
+ Slime slime;
+ SlimeInserter inserter(slime);
+ SlimeFiller::insert_summary_field_with_field_filter(fv, inserter, filter);
+ auto act = slime_to_string(slime);
+ EXPECT_EQ(exp, act);
+}
+
+void
SlimeFillerTest::expect_insert_juniper_field(const std::vector<vespalib::string>& exp, const vespalib::string& exp_slime, const FieldValue& fv)
{
Slime slime;
@@ -609,6 +620,16 @@ TEST_F(SlimeFillerTest, insert_summary_field_with_filter)
expect_insert_summary_field_with_filter("null", make_empty_map(), {});
}
+TEST_F(SlimeFillerTest, insert_summary_field_with_field_filter)
+{
+ auto nested = make_nested_value(0);
+ // Field order depends on assigned field ids, cf. document::Field::calculateIdV7(), and symbol insertion order in slime
+ expect_insert_summary_field_with_field_filter(R"({"f":{"c":66,"a":62},"c":46,"a":42,"b":44,"d":{"c":66,"a":62}})", nested, nullptr);
+ SlimeFillerFilter filter;
+ filter.add("a").add("c").add("f.a").add("d");
+ expect_insert_summary_field_with_field_filter(R"({"f":{"a":62},"a":42,"c":46,"d":{"a":62,"c":66}})", nested, &filter);
+}
+
TEST_F(SlimeFillerTest, insert_juniper_field)
{
expect_insert_juniper_field({"Hello"}, "null", StringFieldValue("Hello"));