summaryrefslogtreecommitdiffstats
path: root/searchsummary
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-10-02 16:04:58 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-10-02 16:04:58 +0200
commit0ef88ee6ac49813e3f22c2aaaa99ec00ab481ab1 (patch)
tree288d066b7bc72d084e0861e1430bf6837b8636ab /searchsummary
parent94f88a9d7726bdb4f1c60efbca46dcd3c919c769 (diff)
Verify that struct mapper is correctly setup.
Diffstat (limited to 'searchsummary')
-rw-r--r--searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp48
1 files changed, 44 insertions, 4 deletions
diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
index a8c752582d5..5d122fa1042 100644
--- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
+++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
@@ -191,6 +191,7 @@ struct AttributeCombinerTest : public ::testing::Test
std::unique_ptr<IDocsumFieldWriter> writer;
DummyStateCallback stateCallback;
GetDocsumsState state;
+ std::shared_ptr<search::StructFieldMapper> _struct_field_mapper;
AttributeCombinerTest();
~AttributeCombinerTest();
@@ -202,7 +203,8 @@ AttributeCombinerTest::AttributeCombinerTest()
: attrs(),
writer(),
stateCallback(),
- state(stateCallback)
+ state(stateCallback),
+ _struct_field_mapper()
{
state._attrCtx = attrs.mgr.createContext();
}
@@ -212,11 +214,10 @@ AttributeCombinerTest::~AttributeCombinerTest() = default;
void
AttributeCombinerTest::set_field(const vespalib::string &field_name, bool filter_elements)
{
- std::shared_ptr<search::StructFieldMapper> struct_field_mapper;
if (filter_elements) {
- struct_field_mapper = std::make_shared<search::StructFieldMapper>();
+ _struct_field_mapper = std::make_shared<search::StructFieldMapper>();
}
- writer = AttributeCombinerDFW::create(field_name, attrs.mgr, filter_elements, struct_field_mapper);
+ writer = AttributeCombinerDFW::create(field_name, attrs.mgr, filter_elements, _struct_field_mapper);
EXPECT_TRUE(writer->setFieldWriterStateIndex(0));
state._fieldWriterStates.resize(1);
}
@@ -302,6 +303,45 @@ TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_corr
assertWritten("null", 5);
}
+TEST_F(AttributeCombinerTest, require_that_struct_field_mapper_is_setup_for_filtered_array_of_struct)
+{
+ set_field("array", true);
+ EXPECT_TRUE(_struct_field_mapper);
+ EXPECT_TRUE(_struct_field_mapper->is_struct_field("array"));
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("map"));
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("smap"));
+ EXPECT_EQ("", _struct_field_mapper->get_struct_field("array.foo"));
+ EXPECT_EQ("array", _struct_field_mapper->get_struct_field("array.name"));
+ EXPECT_EQ("array", _struct_field_mapper->get_struct_field("array.val"));
+ EXPECT_EQ("array", _struct_field_mapper->get_struct_field("array.fval"));
+}
+
+TEST_F(AttributeCombinerTest, require_that_struct_field_mapper_is_setup_for_filtered_map_of_struct)
+{
+ set_field("smap", true);
+ EXPECT_TRUE(_struct_field_mapper);
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("array"));
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("map"));
+ EXPECT_TRUE(_struct_field_mapper->is_struct_field("smap"));
+ EXPECT_EQ("", _struct_field_mapper->get_struct_field("smap.foo"));
+ EXPECT_EQ("smap", _struct_field_mapper->get_struct_field("smap.key"));
+ EXPECT_EQ("smap", _struct_field_mapper->get_struct_field("smap.value.name"));
+ EXPECT_EQ("smap", _struct_field_mapper->get_struct_field("smap.value.val"));
+ EXPECT_EQ("smap", _struct_field_mapper->get_struct_field("smap.value.fval"));
+}
+
+TEST_F(AttributeCombinerTest, require_that_struct_field_mapper_is_setup_for_filtered_map_of_string)
+{
+ set_field("map", true);
+ EXPECT_TRUE(_struct_field_mapper);
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("array"));
+ EXPECT_TRUE(_struct_field_mapper->is_struct_field("map"));
+ EXPECT_FALSE(_struct_field_mapper->is_struct_field("smap"));
+ EXPECT_EQ("", _struct_field_mapper->get_struct_field("map.foo"));
+ EXPECT_EQ("map", _struct_field_mapper->get_struct_field("map.key"));
+ EXPECT_EQ("map", _struct_field_mapper->get_struct_field("map.value"));
+}
+
}
GTEST_MAIN_RUN_ALL_TESTS()