From 1801eb4421d5ea80b6cd881755ba140d5bb76d22 Mon Sep 17 00:00:00 2001 From: Tor Egge Date: Wed, 25 Sep 2019 12:53:22 +0200 Subject: Rewrite attribute combiner unit test to use GTest. --- .../docsummary/attribute_combiner/CMakeLists.txt | 2 + .../attribute_combiner/attribute_combiner_test.cpp | 76 +++++++++++++--------- 2 files changed, 46 insertions(+), 32 deletions(-) (limited to 'searchsummary/src') diff --git a/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt b/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt index df323b9c982..cffdef25e5b 100644 --- a/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt +++ b/searchsummary/src/tests/docsummary/attribute_combiner/CMakeLists.txt @@ -1,8 +1,10 @@ # Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +find_package(GTest REQUIRED) vespa_add_executable(searchsummary_attribute_combiner_test_app TEST SOURCES attribute_combiner_test.cpp DEPENDS searchsummary + GTest::GTest ) vespa_add_test(NAME searchsummary_attribute_combiner_test_app COMMAND searchsummary_attribute_combiner_test_app) 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 60b1574a8d5..01b458daf5d 100644 --- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp +++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include LOG_SETUP("attribute_combiner_test"); @@ -122,7 +122,7 @@ AttributeManagerFixture::buildAttribute(const vespalib::string &name, for (const auto &docValues : values) { uint32_t docId = 0; EXPECT_TRUE(attr->addDoc(docId)); - EXPECT_NOT_EQUAL(0u, docId); + EXPECT_NE(0u, docId); for (const auto &value : docValues) { attr->append(docId, value, 1); } @@ -164,33 +164,40 @@ public: }; -struct Fixture +struct AttributeCombinerTest : public ::testing::Test { AttributeManagerFixture attrs; std::unique_ptr writer; DummyStateCallback stateCallback; GetDocsumsState state; - Fixture(const vespalib::string &fieldName); - ~Fixture(); + AttributeCombinerTest(); + ~AttributeCombinerTest(); + void set_field_name(const vespalib::string &field_name); void assertWritten(const vespalib::string &exp, uint32_t docId); }; -Fixture::Fixture(const vespalib::string &fieldName) +AttributeCombinerTest::AttributeCombinerTest() : attrs(), - writer(AttributeCombinerDFW::create(fieldName, attrs.mgr)), + writer(), stateCallback(), state(stateCallback) { - EXPECT_TRUE(writer->setFieldWriterStateIndex(0)); state._attrCtx = attrs.mgr.createContext(); - state._fieldWriterStates.resize(1); } -Fixture::~Fixture() = default; +AttributeCombinerTest::~AttributeCombinerTest() = default; + +void +AttributeCombinerTest::set_field_name(const vespalib::string &field_name) +{ + writer = AttributeCombinerDFW::create(field_name, attrs.mgr); + EXPECT_TRUE(writer->setFieldWriterStateIndex(0)); + state._fieldWriterStates.resize(1); +} void -Fixture::assertWritten(const vespalib::string &expectedJson, uint32_t docId) +AttributeCombinerTest::assertWritten(const vespalib::string &expectedJson, uint32_t docId) { vespalib::Slime target; vespalib::slime::SlimeInserter inserter(target); @@ -200,41 +207,46 @@ Fixture::assertWritten(const vespalib::string &expectedJson, uint32_t docId) search::SlimeOutputRawBufAdapter adapter(binary); vespalib::slime::BinaryFormat::encode(target, adapter); FieldBlock block(expectedJson); - if (!EXPECT_EQUAL(block.dataLen(), binary.GetUsedLen()) || - !EXPECT_EQUAL(0, memcmp(block.data(), binary.GetDrainPos(), block.dataLen()))) { + EXPECT_EQ(block.dataLen(), binary.GetUsedLen()); + EXPECT_EQ(0, memcmp(block.data(), binary.GetDrainPos(), block.dataLen())); + if (block.dataLen() != binary.GetUsedLen() || + memcmp(block.data(), binary.GetDrainPos(), block.dataLen()) != 0) { LOG(error, "Expected '%s'", expectedJson.c_str()); LOG(error, "Expected normalized '%s'", block.json.c_str()); LOG(error, "Got '%s'", json.c_str()); } } -TEST_F("require that attribute combiner dfw generates correct slime output for array of struct", Fixture("array")) +TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_array_of_struct) { - TEST_DO(f.assertWritten("[ { fval: 110.0, name: \"n1.1\", val: 10}, { name: \"n1.2\", val: 11}]", 1)); - TEST_DO(f.assertWritten("[ { fval: 120.0, name: \"n2\", val: 20}, { fval: 121.0, val: 21 }]", 2)); - TEST_DO(f.assertWritten("[ { fval: 130.0, name: \"n3.1\", val: 30}, { fval: 131.0, name: \"n3.2\"} ]", 3)); - TEST_DO(f.assertWritten("[ { }, { fval: 141.0, name: \"n4.2\", val: 41} ]", 4)); - TEST_DO(f.assertWritten("null", 5)); + set_field_name("array"); + assertWritten("[ { fval: 110.0, name: \"n1.1\", val: 10}, { name: \"n1.2\", val: 11}]", 1); + assertWritten("[ { fval: 120.0, name: \"n2\", val: 20}, { fval: 121.0, val: 21 }]", 2); + assertWritten("[ { fval: 130.0, name: \"n3.1\", val: 30}, { fval: 131.0, name: \"n3.2\"} ]", 3); + assertWritten("[ { }, { fval: 141.0, name: \"n4.2\", val: 41} ]", 4); + assertWritten("null", 5); } -TEST_F("require that attribute combiner dfw generates correct slime output for map of struct", Fixture("smap")) +TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_map_of_struct) { - TEST_DO(f.assertWritten("[ { key: \"k1.1\", value: { fval: 110.0, name: \"n1.1\", val: 10} }, { key: \"k1.2\", value: { name: \"n1.2\", val: 11} }]", 1)); - TEST_DO(f.assertWritten("[ { key: \"k2\", value: { fval: 120.0, name: \"n2\", val: 20} }, { value: { fval: 121.0, val: 21 } }]", 2)); - TEST_DO(f.assertWritten("[ { key: \"k3.1\", value: { fval: 130.0, name: \"n3.1\", val: 30} }, { key: \"k3.2\", value: { fval: 131.0, name: \"n3.2\"} } ]", 3)); - TEST_DO(f.assertWritten("[ { value: { } }, { key: \"k4.2\", value: { fval: 141.0, name: \"n4.2\", val: 41} } ]", 4)); - TEST_DO(f.assertWritten("null", 5)); + set_field_name("smap"); + assertWritten("[ { key: \"k1.1\", value: { fval: 110.0, name: \"n1.1\", val: 10} }, { key: \"k1.2\", value: { name: \"n1.2\", val: 11} }]", 1); + assertWritten("[ { key: \"k2\", value: { fval: 120.0, name: \"n2\", val: 20} }, { value: { fval: 121.0, val: 21 } }]", 2); + assertWritten("[ { key: \"k3.1\", value: { fval: 130.0, name: \"n3.1\", val: 30} }, { key: \"k3.2\", value: { fval: 131.0, name: \"n3.2\"} } ]", 3); + assertWritten("[ { value: { } }, { key: \"k4.2\", value: { fval: 141.0, name: \"n4.2\", val: 41} } ]", 4); + assertWritten("null", 5); } -TEST_F("require that attribute combiner dfw generates correct slime output for map of string", Fixture("map")) +TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_map_of_string) { - TEST_DO(f.assertWritten("[ { key: \"k1.1\", value: \"n1.1\" }, { key: \"k1.2\", value: \"n1.2\"}]", 1)); - TEST_DO(f.assertWritten("[ { key: \"k2\"}]", 2)); - TEST_DO(f.assertWritten("[ { key: \"k3.1\", value: \"n3.1\" }, { value: \"n3.2\"} ]", 3)); - TEST_DO(f.assertWritten("[ { }, { key: \"k4.2\", value: \"n4.2\" } ]", 4)); - TEST_DO(f.assertWritten("null", 5)); + set_field_name("map"); + assertWritten("[ { key: \"k1.1\", value: \"n1.1\" }, { key: \"k1.2\", value: \"n1.2\"}]", 1); + assertWritten("[ { key: \"k2\"}]", 2); + assertWritten("[ { key: \"k3.1\", value: \"n3.1\" }, { value: \"n3.2\"} ]", 3); + assertWritten("[ { }, { key: \"k4.2\", value: \"n4.2\" } ]", 4); + assertWritten("null", 5); } } -TEST_MAIN() { TEST_RUN_ALL(); } +GTEST_MAIN_RUN_ALL_TESTS() -- cgit v1.2.3