diff options
author | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-08-24 12:24:57 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2017-08-24 12:24:57 +0000 |
commit | 3207a57b97811577c421547d1461d2614f36ef01 (patch) | |
tree | 05b6b5c2cb8eb716644950be6616982925d5be8a /searchlib/src/tests/attribute/imported_attribute_vector | |
parent | 556d96bf088eaf8ffcba608157a5d888a8efc3f4 (diff) |
Map child LID to parent LID space in onSerializeFor...Sort functions
Diffstat (limited to 'searchlib/src/tests/attribute/imported_attribute_vector')
-rw-r--r-- | searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp b/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp index f855f51af42..c2d26badf27 100644 --- a/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp +++ b/searchlib/src/tests/attribute/imported_attribute_vector/imported_attribute_vector_test.cpp @@ -304,7 +304,7 @@ template <typename FixtureType> void verify_get_string_from_enum_is_mapped(FixtureType& f) { EnumHandle handle{}; ASSERT_TRUE(f.target_attr->findEnum("foo", handle)); - const char* from_enum = f.imported_attr->getStringFromEnum(handle); + const char* from_enum = f.get_imported_attr()->getStringFromEnum(handle); ASSERT_TRUE(from_enum != nullptr); EXPECT_EQUAL(vespalib::string("foo"), vespalib::string(from_enum)); } @@ -438,7 +438,7 @@ struct MockAttributeVector : NotImplementedAttribute { long _return_value{1234}; MockAttributeVector() - : NotImplementedAttribute("mock", Config(BasicType::INT32)) { + : NotImplementedAttribute("mock", Config(BasicType::STRING)) { } void set_received_args(DocId doc_id, void* ser_to, @@ -475,44 +475,65 @@ struct MockBlobConverter : common::BlobConverter { } }; -struct SerializeFixture : Fixture { +template <typename BaseFixture> +struct SerializeFixture : BaseFixture { std::shared_ptr<MockAttributeVector> mock_target; MockBlobConverter mock_converter; - SerializeFixture() - : Fixture(), - mock_target(std::make_shared<MockAttributeVector>()) - { - reset_with_new_target_attr(mock_target); + SerializeFixture() : mock_target(std::make_shared<MockAttributeVector>()) { + this->reset_with_new_target_attr(mock_target); + this->mock_target->setCommittedDocIdLimit(8); // Target LID of 7 is highest used by ref attribute. Limit is +1. } + ~SerializeFixture() override; }; -TEST_F("onSerializeForAscendingSort() is forwarded to target vector", SerializeFixture) { +template <typename BaseFixture> +SerializeFixture<BaseFixture>::~SerializeFixture() {} + +template <typename FixtureT> +void check_onSerializeForAscendingSort_is_forwarded_with_remapped_lid() { + FixtureT f; int dummy_tag; void* ser_to = &dummy_tag; EXPECT_EQUAL(f.mock_target->_return_value, - f.imported_attr->serializeForAscendingSort( - DocId(10), ser_to, 777, &f.mock_converter)); + f.get_imported_attr()->serializeForAscendingSort( + DocId(4), ser_to, 777, &f.mock_converter)); // child lid 4 -> parent lid 7 EXPECT_TRUE(f.mock_target->_ascending_called); - EXPECT_EQUAL(DocId(10), f.mock_target->_doc_id); + EXPECT_EQUAL(DocId(7), f.mock_target->_doc_id); EXPECT_EQUAL(ser_to, f.mock_target->_ser_to); EXPECT_EQUAL(777, f.mock_target->_available); EXPECT_EQUAL(&f.mock_converter, f.mock_target->_bc); } -TEST_F("onSerializeForDescendingSort() is forwarded to target vector", SerializeFixture) { +TEST("onSerializeForAscendingSort() is forwarded with remapped LID to target vector") { + TEST_DO(check_onSerializeForAscendingSort_is_forwarded_with_remapped_lid< + SerializeFixture<SingleStringAttrFixture>>()); + TEST_DO(check_onSerializeForAscendingSort_is_forwarded_with_remapped_lid< + SerializeFixture<ReadGuardSingleStringAttrFixture>>()); +} + +template <typename FixtureT> +void check_onSerializeForDescendingSort_is_forwarded_with_remapped_lid() { + FixtureT f; int dummy_tag; void* ser_to = &dummy_tag; EXPECT_EQUAL(f.mock_target->_return_value, - f.imported_attr->serializeForDescendingSort( - DocId(20), ser_to, 555, &f.mock_converter)); + f.get_imported_attr()->serializeForDescendingSort( + DocId(2), ser_to, 555, &f.mock_converter)); // child lid 2 -> parent lid 3 EXPECT_TRUE(f.mock_target->_descending_called); - EXPECT_EQUAL(DocId(20), f.mock_target->_doc_id); + EXPECT_EQUAL(DocId(3), f.mock_target->_doc_id); EXPECT_EQUAL(ser_to, f.mock_target->_ser_to); EXPECT_EQUAL(555, f.mock_target->_available); EXPECT_EQUAL(&f.mock_converter, f.mock_target->_bc); } +TEST("onSerializeForDescendingSort() is forwarded with remapped LID to target vector") { + TEST_DO(check_onSerializeForDescendingSort_is_forwarded_with_remapped_lid< + SerializeFixture<SingleStringAttrFixture>>()); + TEST_DO(check_onSerializeForDescendingSort_is_forwarded_with_remapped_lid< + SerializeFixture<ReadGuardSingleStringAttrFixture>>()); +} + } // attribute } // search |