From d972c7ff721a5006b5e4ae4d467cd015ac3a09dc Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 12 Aug 2020 20:19:29 +0000 Subject: Control your negations... And test that you do. --- .../tests/proton/server/documentretriever_test.cpp | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) (limited to 'searchcore/src/tests/proton/server/documentretriever_test.cpp') diff --git a/searchcore/src/tests/proton/server/documentretriever_test.cpp b/searchcore/src/tests/proton/server/documentretriever_test.cpp index 09aaa383f1e..d956e1ff647 100644 --- a/searchcore/src/tests/proton/server/documentretriever_test.cpp +++ b/searchcore/src/tests/proton/server/documentretriever_test.cpp @@ -567,6 +567,49 @@ TEST_F("require that tensor attribute can be retrieved", Fixture) { ASSERT_TRUE(tensor_value->getAsTensorPtr()->equals(*dynamic_tensor)); } +struct Lookup : public IFieldInfo +{ + Lookup() : _count(0) {} + bool isFieldAttribute(const document::Field & field) const override { + _count++; + return (field.getName()[0] == 'a'); + } + mutable unsigned _count; +}; + +TEST("require ") { + Lookup lookup; + FieldSetAttributeDB fsDB(lookup); + document::Field attr1("attr1", 1, *document::DataType::LONG, true); + document::Field attr2("attr2", 2, *document::DataType::LONG, true); + document::Field not_attr1("not_attr1", 3, *document::DataType::LONG, true); + document::Field::Set allAttr; + allAttr.insert(&attr1); + EXPECT_TRUE(fsDB.areAllFieldsAttributes(13, allAttr)); + EXPECT_EQUAL(1u, lookup._count); + EXPECT_TRUE(fsDB.areAllFieldsAttributes(13, allAttr)); + EXPECT_EQUAL(1u, lookup._count); + + allAttr.insert(&attr2); + EXPECT_TRUE(fsDB.areAllFieldsAttributes(17, allAttr)); + EXPECT_EQUAL(3u, lookup._count); + EXPECT_TRUE(fsDB.areAllFieldsAttributes(17, allAttr)); + EXPECT_EQUAL(3u, lookup._count); + + document::Field::Set notAllAttr; + notAllAttr.insert(¬_attr1); + EXPECT_FALSE(fsDB.areAllFieldsAttributes(33, notAllAttr)); + EXPECT_EQUAL(4u, lookup._count); + EXPECT_FALSE(fsDB.areAllFieldsAttributes(33, notAllAttr)); + EXPECT_EQUAL(4u, lookup._count); + + allAttr.insert(&attr1); + EXPECT_FALSE(fsDB.areAllFieldsAttributes(39, notAllAttr)); + EXPECT_EQUAL(5u, lookup._count); + EXPECT_FALSE(fsDB.areAllFieldsAttributes(39, notAllAttr)); + EXPECT_EQUAL(5u, lookup._count); +} + } // namespace TEST_MAIN() { TEST_RUN_ALL(); } -- cgit v1.2.3