From 0ef88ee6ac49813e3f22c2aaaa99ec00ab481ab1 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Wed, 2 Oct 2019 16:04:58 +0200 Subject: Verify that struct mapper is correctly setup. --- .../attribute_combiner/attribute_combiner_test.cpp | 48 ++++++++++++++++++++-- 1 file changed, 44 insertions(+), 4 deletions(-) (limited to 'searchsummary') 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 writer; DummyStateCallback stateCallback; GetDocsumsState state; + std::shared_ptr _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 struct_field_mapper; if (filter_elements) { - struct_field_mapper = std::make_shared(); + _struct_field_mapper = std::make_shared(); } - 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() -- cgit v1.2.3