summaryrefslogtreecommitdiffstats
path: root/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp')
-rw-r--r--searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp100
1 files changed, 30 insertions, 70 deletions
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 ae8e5f88c28..c64c5b2ed7d 100644
--- a/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
+++ b/searchsummary/src/tests/docsummary/attribute_combiner/attribute_combiner_test.cpp
@@ -14,6 +14,7 @@
#include <vespa/searchsummary/docsummary/docsumstate.h>
#include <vespa/searchsummary/docsummary/docsum_field_writer_state.h>
#include <vespa/searchsummary/docsummary/attribute_combiner_dfw.h>
+#include <vespa/searchsummary/test/slime_value.h>
#include <vespa/vespalib/data/slime/slime.h>
#include <vespa/vespalib/gtest/gtest.h>
@@ -23,8 +24,8 @@ LOG_SETUP("attribute_combiner_test");
using search::AttributeFactory;
using search::AttributeManager;
using search::AttributeVector;
-using search::IntegerAttribute;
using search::FloatingPointAttribute;
+using search::IntegerAttribute;
using search::MatchingElements;
using search::StringAttribute;
using search::attribute::BasicType;
@@ -37,41 +38,10 @@ using search::docsummary::GetDocsumsState;
using search::docsummary::GetDocsumsStateCallback;
using search::docsummary::IDocsumEnvironment;
using search::docsummary::IDocsumFieldWriter;
+using search::docsummary::test::SlimeValue;
namespace {
-vespalib::string
-toCompactJsonString(const vespalib::Slime &slime)
-{
- vespalib::SimpleBuffer buf;
- vespalib::slime::JsonFormat::encode(slime, buf, true);
- return buf.get().make_string();
-}
-
-struct FieldBlock {
- vespalib::string input;
- vespalib::Slime slime;
- search::RawBuf binary;
- vespalib::string json;
-
- explicit FieldBlock(const vespalib::string &jsonInput);
- ~FieldBlock();
- const char *data() const { return binary.GetDrainPos(); }
- size_t dataLen() const { return binary.GetUsedLen(); }
-};
-
-FieldBlock::FieldBlock(const vespalib::string &jsonInput)
- : input(jsonInput), slime(), binary(1024), json()
-{
- size_t used = vespalib::slime::JsonFormat::decode(jsonInput, slime);
- EXPECT_TRUE(used > 0);
- json = toCompactJsonString(slime);
- search::SlimeOutputRawBufAdapter adapter(binary);
- vespalib::slime::BinaryFormat::encode(slime, adapter);
-}
-
-FieldBlock::~FieldBlock() = default;
-
struct AttributeManagerFixture
{
AttributeManager mgr;
@@ -228,83 +198,73 @@ AttributeCombinerTest::set_field(const vespalib::string &field_name, bool filter
}
void
-AttributeCombinerTest::assertWritten(const vespalib::string &expectedJson, uint32_t docId)
+AttributeCombinerTest::assertWritten(const vespalib::string &exp_slime_as_json, uint32_t docId)
{
- vespalib::Slime target;
- vespalib::slime::SlimeInserter inserter(target);
+ vespalib::Slime act;
+ vespalib::slime::SlimeInserter inserter(act);
writer->insertField(docId, nullptr, &state, search::docsummary::RES_JSONSTRING, inserter);
- search::RawBuf binary(1024);
- vespalib::string json = toCompactJsonString(target);
- search::SlimeOutputRawBufAdapter adapter(binary);
- vespalib::slime::BinaryFormat::encode(target, adapter);
- FieldBlock block(expectedJson);
- 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());
- }
+
+ SlimeValue exp(exp_slime_as_json);
+ EXPECT_EQ(exp.slime, act);
}
TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_array_of_struct)
{
set_field("array", false);
- 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("[ { 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(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_map_of_struct)
{
set_field("smap", false);
- 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} }, { key: \"\", 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("[ { key: \"\", value: { } }, { key: \"k4.2\", value: { fval: 141.0, name: \"n4.2\", val: 41} } ]", 4);
+ 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} }, { key: '', 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("[ { key: '', value: { } }, { key: 'k4.2', value: { fval: 141.0, name: 'n4.2', val: 41} } ]", 4);
assertWritten("null", 5);
}
TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_map_of_string)
{
set_field("map", false);
- assertWritten("[ { key: \"k1.1\", value: \"n1.1\" }, { key: \"k1.2\", value: \"n1.2\"}]", 1);
- assertWritten("[ { key: \"k2\", value: \"\" }]", 2);
- assertWritten("[ { key: \"k3.1\", value: \"n3.1\" }, { key: \"\", value: \"n3.2\"} ]", 3);
- assertWritten("[ { key: \"\", value: \"\" }, { key: \"k4.2\", value: \"n4.2\" } ]", 4);
+ assertWritten("[ { key: 'k1.1', value: 'n1.1' }, { key: 'k1.2', value: 'n1.2'}]", 1);
+ assertWritten("[ { key: 'k2', value: '' }]", 2);
+ assertWritten("[ { key: 'k3.1', value: 'n3.1' }, { key: '', value: 'n3.2'} ]", 3);
+ assertWritten("[ { key: '', value: '' }, { key: 'k4.2', value: 'n4.2' } ]", 4);
assertWritten("null", 5);
}
TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_filtered_array_of_struct)
{
set_field("array", true);
- assertWritten("[ { name: \"n1.2\", val: 11}]", 1);
+ assertWritten("[ { name: 'n1.2', val: 11}]", 1);
assertWritten("[ ]", 2);
- assertWritten("[ { fval: 130.0, name: \"n3.1\", val: 30} ]", 3);
- assertWritten("[ { fval: 141.0, name: \"n4.2\", val: 41} ]", 4);
+ assertWritten("[ { fval: 130.0, name: 'n3.1', val: 30} ]", 3);
+ assertWritten("[ { fval: 141.0, name: 'n4.2', val: 41} ]", 4);
assertWritten("null", 5);
}
TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_filtered_map_of_struct)
{
set_field("smap", true);
- assertWritten("[ { key: \"k1.2\", value: { name: \"n1.2\", val: 11} }]", 1);
+ assertWritten("[ { key: 'k1.2', value: { name: 'n1.2', val: 11} }]", 1);
assertWritten("[ ]", 2);
- assertWritten("[ { key: \"k3.1\", value: { fval: 130.0, name: \"n3.1\", val: 30} } ]", 3);
- assertWritten("[ { key: \"k4.2\", value: { fval: 141.0, name: \"n4.2\", val: 41} } ]", 4);
+ assertWritten("[ { key: 'k3.1', value: { fval: 130.0, name: 'n3.1', val: 30} } ]", 3);
+ assertWritten("[ { key: 'k4.2', value: { fval: 141.0, name: 'n4.2', val: 41} } ]", 4);
assertWritten("null", 5);
}
TEST_F(AttributeCombinerTest, require_that_attribute_combiner_dfw_generates_correct_slime_output_for_filtered_map_of_string)
{
set_field("map", true);
- assertWritten("[ { key: \"k1.2\", value: \"n1.2\"}]", 1);
+ assertWritten("[ { key: 'k1.2', value: 'n1.2'}]", 1);
assertWritten("[ ]", 2);
- assertWritten("[ { key: \"k3.1\", value: \"n3.1\" } ]", 3);
- assertWritten("[ { key: \"k4.2\", value: \"n4.2\" } ]", 4);
+ assertWritten("[ { key: 'k3.1', value: 'n3.1' } ]", 3);
+ assertWritten("[ { key: 'k4.2', value: 'n4.2' } ]", 4);
assertWritten("null", 5);
}