summaryrefslogtreecommitdiffstats
path: root/vsm
diff options
context:
space:
mode:
authorArne H Juul <arnej@yahoo-inc.com>2017-02-22 15:56:25 +0100
committerArne H Juul <arnej@yahoo-inc.com>2017-02-23 10:32:36 +0100
commitd025205a010be034128d012adda6fd0a37d9c7b4 (patch)
tree4e08c5644a98d8d869a094fab7ba471a88743de9 /vsm
parente11503ef600789c957e36eea7ddb181342e1f1c2 (diff)
test new SlimeFieldWriter instead
Diffstat (limited to 'vsm')
-rw-r--r--vsm/src/tests/docsum/docsum.cpp84
1 files changed, 51 insertions, 33 deletions
diff --git a/vsm/src/tests/docsum/docsum.cpp b/vsm/src/tests/docsum/docsum.cpp
index 4ebd7061b69..de4daae36aa 100644
--- a/vsm/src/tests/docsum/docsum.cpp
+++ b/vsm/src/tests/docsum/docsum.cpp
@@ -5,7 +5,7 @@
#include <vespa/document/fieldvalue/fieldvalues.h>
#include <vespa/vsm/common/docsum.h>
#include <vespa/vsm/vsm/flattendocsumwriter.h>
-#include <vespa/vsm/vsm/jsondocsumwriter.h>
+#include <vespa/vsm/vsm/slimefieldwriter.h>
using namespace document;
@@ -56,15 +56,15 @@ private:
assertFlattenDocsumWriter(fdw, fv, exp);
}
void assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValue & fv, const std::string & exp);
- void assertJSONDocsumWriter(const FieldValue & fv, const std::string & exp) {
- JSONDocsumWriter jdw;
- assertJSONDocsumWriter(jdw, fv, exp);
+ void assertSlimeFieldWriter(const FieldValue & fv, const std::string & exp) {
+ SlimeFieldWriter jdw;
+ assertSlimeFieldWriter(jdw, fv, exp);
}
- void assertJSONDocsumWriter(JSONDocsumWriter & jdw, const FieldValue & fv, const std::string & exp);
+ void assertSlimeFieldWriter(SlimeFieldWriter & jdw, const FieldValue & fv, const std::string & exp);
void testFlattenDocsumWriter();
- void testJSONDocsumWriter();
- void requireThatJSONDocsumWriterHandlesMap();
+ void testSlimeFieldWriter();
+ void requireThatSlimeFieldWriterHandlesMap();
void testDocSumCache();
public:
@@ -104,10 +104,25 @@ DocsumTest::assertFlattenDocsumWriter(FlattenDocsumWriter & fdw, const FieldValu
}
void
-DocsumTest::assertJSONDocsumWriter(JSONDocsumWriter & jdw, const FieldValue & fv, const std::string & exp)
+DocsumTest::assertSlimeFieldWriter(SlimeFieldWriter & jdw, const FieldValue & fv, const std::string & exp)
{
- jdw.write(fv);
- EXPECT_EQUAL(jdw.getResult(), exp);
+ jdw.convert(fv);
+
+ vespalib::Slime gotSlime;
+ vespalib::Memory serialized(jdw.out());
+ size_t decodeRes = vespalib::slime::BinaryFormat::decode(serialized, gotSlime);
+ ASSERT_EQUAL(decodeRes, serialized.size);
+
+ vespalib::Slime expSlime;
+ size_t used = vespalib::slime::JsonFormat::decode(exp, expSlime);
+ EXPECT_EQUAL(exp.size(), used);
+ if (!(expSlime == gotSlime)) {
+ fprintf(stderr, "exp type: %u\n", expSlime.get().type().getId());
+ fprintf(stderr, "got type: %u\n", gotSlime.get().type().getId());
+ fprintf(stderr, "exp double: %.17g\n", expSlime.get().asDouble());
+ fprintf(stderr, "got double: %.17g\n", gotSlime.get().asDouble());
+ }
+ EXPECT_EQUAL(expSlime, gotSlime);
}
void
@@ -147,20 +162,20 @@ DocsumTest::testFlattenDocsumWriter()
}
void
-DocsumTest::testJSONDocsumWriter()
+DocsumTest::testSlimeFieldWriter()
{
{ // basic types
- assertJSONDocsumWriter(LongFieldValue(123456789), "123456789");
- assertJSONDocsumWriter(FloatFieldValue(12.34), "12.34");
- assertJSONDocsumWriter(StringFieldValue("foo bar"), "\"foo bar\"");
+ assertSlimeFieldWriter(LongFieldValue(123456789), "123456789");
+ assertSlimeFieldWriter(DoubleFieldValue(12.34), "12.34");
+ assertSlimeFieldWriter(StringFieldValue("foo bar"), "\"foo bar\"");
}
{ // collection field values
- assertJSONDocsumWriter(createFieldValue(StringList().add("foo").add("bar").add("baz")),
+ assertSlimeFieldWriter(createFieldValue(StringList().add("foo").add("bar").add("baz")),
"[\"foo\",\"bar\",\"baz\"]");
- assertJSONDocsumWriter(createFieldValue(WeightedStringList().add(std::make_pair("bar", 20)).
+ assertSlimeFieldWriter(createFieldValue(WeightedStringList().add(std::make_pair("bar", 20)).
add(std::make_pair("baz", 30)).
add(std::make_pair("foo", 10))),
- "[[\"bar\",20],[\"baz\",30],[\"foo\",10]]");
+ "[{item:\"bar\",weight:20},{item:\"baz\",weight:30},{item:\"foo\",weight:10}]");
}
{ // struct field value
StructDataType subType("substruct");
@@ -186,36 +201,39 @@ DocsumTest::testJSONDocsumWriter()
{ // select a subset and then all
- JSONDocsumWriter jdw;
+ SlimeFieldWriter jdw;
DocsumFieldSpec::FieldIdentifierVector fields;
fields.push_back(DocsumFieldSpec::FieldIdentifier(
0, *type.buildFieldPath("a")));
fields.push_back(DocsumFieldSpec::FieldIdentifier(
0, *type.buildFieldPath("c.e")));
jdw.setInputFields(fields);
- assertJSONDocsumWriter(jdw, value, "{\"a\":\"foo\",\"c\":{\"e\":\"qux\"}}");
+ assertSlimeFieldWriter(jdw, value, "{\"a\":\"foo\",\"c\":{\"e\":\"qux\"}}");
jdw.clear();
- assertJSONDocsumWriter(jdw, value, "{\"a\":\"foo\",\"b\":\"bar\",\"c\":{\"d\":\"baz\",\"e\":\"qux\"}}");
+ assertSlimeFieldWriter(jdw, value, "{\"a\":\"foo\",\"b\":\"bar\",\"c\":{\"d\":\"baz\",\"e\":\"qux\"}}");
}
- }
+
{ // multiple invocations
- JSONDocsumWriter jdw;
- assertJSONDocsumWriter(jdw, StringFieldValue("foo"), "\"foo\"");
- assertJSONDocsumWriter(jdw, StringFieldValue("bar"), "\"foo\"\"bar\"");
+ SlimeFieldWriter jdw;
+ assertSlimeFieldWriter(jdw, StringFieldValue("foo"), "\"foo\"");
+ jdw.clear();
+ assertSlimeFieldWriter(jdw, StringFieldValue("bar"), "\"bar\"");
jdw.clear();
- assertJSONDocsumWriter(jdw, StringFieldValue("baz"), "\"baz\"");
+ assertSlimeFieldWriter(jdw, StringFieldValue("baz"), "\"baz\"");
+ }
+
}
}
void
-DocsumTest::requireThatJSONDocsumWriterHandlesMap()
+DocsumTest::requireThatSlimeFieldWriterHandlesMap()
{
{ // map<string, string>
MapDataType mapType(*DataType::STRING, *DataType::STRING);
MapFieldValue mapfv(mapType);
EXPECT_TRUE(mapfv.put(StringFieldValue("k1"), StringFieldValue("v1")));
EXPECT_TRUE(mapfv.put(StringFieldValue("k2"), StringFieldValue("v2")));
- assertJSONDocsumWriter(mapfv, "[{\"key\":\"k1\",\"value\":\"v1\"},{\"key\":\"k2\",\"value\":\"v2\"}]");
+ assertSlimeFieldWriter(mapfv, "[{\"key\":\"k1\",\"value\":\"v1\"},{\"key\":\"k2\",\"value\":\"v2\"}]");
}
{ // map<string, struct>
StructDataType structType("struct");
@@ -230,17 +248,17 @@ DocsumTest::requireThatJSONDocsumWriterHandlesMap()
MapFieldValue mapfv(mapType);
EXPECT_TRUE(mapfv.put(StringFieldValue("k1"), structValue));
{ // select a subset and then all
- JSONDocsumWriter jdw;
+ SlimeFieldWriter jdw;
DocsumFieldSpec::FieldIdentifierVector fields;
fields.push_back(DocsumFieldSpec::FieldIdentifier(0, *mapType.buildFieldPath("value.b")));
jdw.setInputFields(fields);
- assertJSONDocsumWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"b\":\"bar\"}}]");
+ assertSlimeFieldWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"b\":\"bar\"}}]");
fields[0] = DocsumFieldSpec::FieldIdentifier(0, *mapType.buildFieldPath("{k1}.a"));
jdw.clear();
jdw.setInputFields(fields);
- assertJSONDocsumWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"a\":\"foo\"}}]");
+ assertSlimeFieldWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"a\":\"foo\"}}]");
jdw.clear(); // all fields implicit
- assertJSONDocsumWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"a\":\"foo\",\"b\":\"bar\"}}]");
+ assertSlimeFieldWriter(jdw, mapfv, "[{\"key\":\"k1\",\"value\":{\"a\":\"foo\",\"b\":\"bar\"}}]");
}
}
}
@@ -251,8 +269,8 @@ DocsumTest::Main()
TEST_INIT("docsum_test");
testFlattenDocsumWriter();
- testJSONDocsumWriter();
- requireThatJSONDocsumWriterHandlesMap();
+ testSlimeFieldWriter();
+ requireThatSlimeFieldWriterHandlesMap();
TEST_DONE();
}