diff options
Diffstat (limited to 'config/src/tests/payload_converter/payload_converter.cpp')
-rw-r--r-- | config/src/tests/payload_converter/payload_converter.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/config/src/tests/payload_converter/payload_converter.cpp b/config/src/tests/payload_converter/payload_converter.cpp new file mode 100644 index 00000000000..664683b651f --- /dev/null +++ b/config/src/tests/payload_converter/payload_converter.cpp @@ -0,0 +1,81 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/fastos/fastos.h> +#include <vespa/log/log.h> +LOG_SETUP("payload_converter"); +#include <vespa/vespalib/testkit/test_kit.h> +#include <vespa/config/common/payload_converter.h> + +using namespace config; +using namespace vespalib; +using namespace vespalib::slime; + +TEST("require that v2 payload leaf values can be converted to cfg format") { + Slime slime; + Cursor & root(slime.setObject()); + root.setString("foo", "bar"); + root.setLong("bar", 8); + root.setDouble("baz", 3.1); + root.setBool("quux", true); + PayloadConverter converter(root); + std::vector<vespalib::string> lines(converter.convert()); + std::sort(lines.begin(), lines.end()); + + ASSERT_EQUAL(4u, lines.size()); + EXPECT_EQUAL("bar 8", lines[0]); + EXPECT_EQUAL("baz 3.1", lines[1]); + EXPECT_EQUAL("foo \"bar\"", lines[2]); + EXPECT_EQUAL("quux true", lines[3]); +} + +TEST("require that v2 payload struct values can be converted to cfg format") { + Slime slime; + Cursor & root(slime.setObject()); + Cursor & inner(root.setObject("obj")); + inner.setString("foo", "bar"); + inner.setLong("bar", 8); + PayloadConverter converter(root); + std::vector<vespalib::string> lines(converter.convert()); + std::sort(lines.begin(), lines.end()); + + ASSERT_EQUAL(2u, lines.size()); + EXPECT_EQUAL("obj.bar 8", lines[0]); + EXPECT_EQUAL("obj.foo \"bar\"", lines[1]); +} + +TEST("require that v2 payload array values can be converted to cfg format") { + Slime slime; + Cursor & root(slime.setObject()); + Cursor & inner(root.setArray("arr")); + inner.addString("foo"); + inner.addLong(8); + PayloadConverter converter(root); + std::vector<vespalib::string> lines(converter.convert()); + ASSERT_EQUAL(2u, lines.size()); + EXPECT_EQUAL("arr[0] \"foo\"", lines[0]); + EXPECT_EQUAL("arr[1] 8", lines[1]); +} + + +TEST("require that v2 payload nested structures can be converted to cfg format") { + Slime slime; + Cursor & root(slime.setObject()); + Cursor & inner(root.setArray("arr")); + Cursor & obj1(inner.addObject()); + Cursor & obj2(inner.addObject()); + obj1.setString("foo", "bar"); + obj2.setLong("bar", 5); + Cursor & inner2(root.setObject("obj")); + Cursor & innerArr(inner2.setArray("arr")); + Cursor & innerobj(innerArr.addObject()); + Cursor & innerArr2(innerobj.setArray("arr2")); + innerArr2.addString("muhaha"); + PayloadConverter converter(root); + std::vector<vespalib::string> lines(converter.convert()); + std::sort(lines.begin(), lines.end()); + ASSERT_EQUAL(3u, lines.size()); + EXPECT_EQUAL("arr[0].foo \"bar\"", lines[0]); + EXPECT_EQUAL("arr[1].bar 5", lines[1]); + EXPECT_EQUAL("obj.arr[0].arr2[0] \"muhaha\"", lines[2]); +} + +TEST_MAIN() { TEST_RUN_ALL(); } |