diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2019-10-02 16:04:58 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2019-10-02 16:04:58 +0200 |
commit | 0ef88ee6ac49813e3f22c2aaaa99ec00ab481ab1 (patch) | |
tree | 288d066b7bc72d084e0861e1430bf6837b8636ab | |
parent | 94f88a9d7726bdb4f1c60efbca46dcd3c919c769 (diff) |
Verify that struct mapper is correctly setup.
-rw-r--r-- | searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp | 48 |
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() |