diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-05-20 13:10:09 +0000 |
---|---|---|
committer | Geir Storli <geirst@verizonmedia.com> | 2020-05-20 13:10:09 +0000 |
commit | 47e95a1a3506525c832517a4f8b0e925c9f12c02 (patch) | |
tree | 669e929e6f21741c880e95a131409c26241dbe19 /searchlib/src/tests/common | |
parent | eb1e9294ad2c207f7c9b465f42d2b3de72fd336e (diff) |
Prepare to support matched-elements-only for arrays and weighted sets of primitive types.
This renames StructFieldMapper to MatchingElementsFields with added support for basic fields.
Also some terminology is aligned.
Diffstat (limited to 'searchlib/src/tests/common')
4 files changed, 64 insertions, 61 deletions
diff --git a/searchlib/src/tests/common/matching_elements_fields/CMakeLists.txt b/searchlib/src/tests/common/matching_elements_fields/CMakeLists.txt new file mode 100644 index 00000000000..3d6f338315a --- /dev/null +++ b/searchlib/src/tests/common/matching_elements_fields/CMakeLists.txt @@ -0,0 +1,9 @@ +# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchlib_common_matching_elements_fields_test_app TEST + SOURCES + matching_elements_fields_test.cpp + DEPENDS + searchlib + gtest +) +vespa_add_test(NAME searchlib_common_matching_elements_fields_test_app COMMAND searchlib_common_matching_elements_fields_test_app) diff --git a/searchlib/src/tests/common/matching_elements_fields/matching_elements_fields_test.cpp b/searchlib/src/tests/common/matching_elements_fields/matching_elements_fields_test.cpp new file mode 100644 index 00000000000..766be30f8f1 --- /dev/null +++ b/searchlib/src/tests/common/matching_elements_fields/matching_elements_fields_test.cpp @@ -0,0 +1,55 @@ +// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/vespalib/gtest/gtest.h> +#include <vespa/searchlib/common/matching_elements_fields.h> + +using namespace search; + +namespace { + +std::string str(const vespalib::string &s) { return std::string(s.data(), s.size()); } + +} + +struct MatchingElementsFieldsTest : ::testing::Test { + MatchingElementsFields fields; + MatchingElementsFieldsTest() : fields() { + fields.add_mapping("foo", "foo.a"); + fields.add_mapping("foo", "foo.b"); + fields.add_mapping("bar", "bar.x"); + fields.add_mapping("bar", "bar.y"); + fields.add_field("baz"); + } + ~MatchingElementsFieldsTest() = default; +}; + +TEST_F(MatchingElementsFieldsTest, require_that_field_can_be_identified) { + EXPECT_TRUE(fields.has_field("foo")); + EXPECT_TRUE(fields.has_field("bar")); + EXPECT_TRUE(fields.has_field("baz")); + EXPECT_TRUE(!fields.has_field("foo.a")); + EXPECT_TRUE(!fields.has_field("bar.x")); + EXPECT_TRUE(!fields.has_field("bogus")); +} + +TEST_F(MatchingElementsFieldsTest, require_that_struct_field_can_be_identified) { + EXPECT_TRUE(!fields.has_struct_field("foo")); + EXPECT_TRUE(!fields.has_struct_field("bar")); + EXPECT_TRUE(!fields.has_struct_field("baz")); + EXPECT_TRUE(fields.has_struct_field("foo.a")); + EXPECT_TRUE(fields.has_struct_field("bar.x")); + EXPECT_TRUE(!fields.has_struct_field("bogus")); +} + +TEST_F(MatchingElementsFieldsTest, require_that_struct_field_maps_to_enclosing_field_name) { + EXPECT_EQ(str(fields.get_enclosing_field("foo.a")), str("foo")); + EXPECT_EQ(str(fields.get_enclosing_field("foo.b")), str("foo")); + EXPECT_EQ(str(fields.get_enclosing_field("bar.x")), str("bar")); + EXPECT_EQ(str(fields.get_enclosing_field("bar.y")), str("bar")); +} + +TEST_F(MatchingElementsFieldsTest, require_that_nonexisting_struct_field_maps_to_empty_string) { + EXPECT_EQ(str(fields.get_enclosing_field("bogus")), str("")); +} + +GTEST_MAIN_RUN_ALL_TESTS() diff --git a/searchlib/src/tests/common/struct_field_mapper/CMakeLists.txt b/searchlib/src/tests/common/struct_field_mapper/CMakeLists.txt deleted file mode 100644 index f5712d22989..00000000000 --- a/searchlib/src/tests/common/struct_field_mapper/CMakeLists.txt +++ /dev/null @@ -1,9 +0,0 @@ -# Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -vespa_add_executable(searchlib_common_struct_field_mapper_test_app TEST - SOURCES - struct_field_mapper_test.cpp - DEPENDS - searchlib - gtest -) -vespa_add_test(NAME searchlib_common_struct_field_mapper_test_app COMMAND searchlib_common_struct_field_mapper_test_app) diff --git a/searchlib/src/tests/common/struct_field_mapper/struct_field_mapper_test.cpp b/searchlib/src/tests/common/struct_field_mapper/struct_field_mapper_test.cpp deleted file mode 100644 index c5368111859..00000000000 --- a/searchlib/src/tests/common/struct_field_mapper/struct_field_mapper_test.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// Copyright 2019 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. - -#include <vespa/vespalib/gtest/gtest.h> -#include <vespa/searchlib/common/struct_field_mapper.h> - -using namespace search; - -namespace { - -std::string str(const vespalib::string &s) { return std::string(s.data(), s.size()); } - -} - -struct StructFieldMapperTest : ::testing::Test { - StructFieldMapper mapper; - StructFieldMapperTest() : mapper() { - mapper.add_mapping("foo", "foo.a"); - mapper.add_mapping("foo", "foo.b"); - mapper.add_mapping("bar", "bar.x"); - mapper.add_mapping("bar", "bar.y"); - } - ~StructFieldMapperTest() = default; -}; - -TEST_F(StructFieldMapperTest, require_that_struct_field_can_be_identified) { - EXPECT_TRUE(mapper.is_struct_field("foo")); - EXPECT_TRUE(mapper.is_struct_field("bar")); - EXPECT_TRUE(!mapper.is_struct_field("foo.a")); - EXPECT_TRUE(!mapper.is_struct_field("bar.x")); - EXPECT_TRUE(!mapper.is_struct_field("bogus")); -} - -TEST_F(StructFieldMapperTest, require_that_struct_subfield_can_be_identified) { - EXPECT_TRUE(!mapper.is_struct_subfield("foo")); - EXPECT_TRUE(!mapper.is_struct_subfield("bar")); - EXPECT_TRUE(mapper.is_struct_subfield("foo.a")); - EXPECT_TRUE(mapper.is_struct_subfield("bar.x")); - EXPECT_TRUE(!mapper.is_struct_subfield("bogus")); -} - -TEST_F(StructFieldMapperTest, require_that_struct_subfield_maps_to_enclosing_struct_field_name) { - EXPECT_EQ(str(mapper.get_struct_field("foo.a")), str("foo")); - EXPECT_EQ(str(mapper.get_struct_field("foo.b")), str("foo")); - EXPECT_EQ(str(mapper.get_struct_field("bar.x")), str("bar")); - EXPECT_EQ(str(mapper.get_struct_field("bar.y")), str("bar")); -} - -TEST_F(StructFieldMapperTest, require_that_nonexisting_struct_subfield_maps_to_empty_string) { - EXPECT_EQ(str(mapper.get_struct_field("bogus")), str("")); -} - -GTEST_MAIN_RUN_ALL_TESTS() |