diff options
author | Arne H Juul <arnej27959@users.noreply.github.com> | 2021-10-12 11:56:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-12 11:56:30 +0200 |
commit | 3b7055817342c412820bec420654614e3becb863 (patch) | |
tree | 8f80d656441090aea63bdc9f9b1a3bbd9c26798c /vespalib/src/tests | |
parent | a1616e33c5c12ca21efcb18b7b274009fb4b106b (diff) | |
parent | a46ddef2850cbce4af3a499a4ef2da3f9720e17d (diff) |
Merge pull request #19510 from vespa-engine/arnej/add-binary-data-input
add "data" format as JSON extension
Diffstat (limited to 'vespalib/src/tests')
-rw-r--r-- | vespalib/src/tests/slime/slime_json_format_test.cpp | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/vespalib/src/tests/slime/slime_json_format_test.cpp b/vespalib/src/tests/slime/slime_json_format_test.cpp index 9e1040b36ad..05dca9112d6 100644 --- a/vespalib/src/tests/slime/slime_json_format_test.cpp +++ b/vespalib/src/tests/slime/slime_json_format_test.cpp @@ -278,6 +278,36 @@ TEST("decode string") { EXPECT_EQUAL(std::string("\xf4\x8f\xbf\xbf"), json_string("\\udbff\\udfff")); } +TEST_F("decode data", Slime) { + EXPECT_TRUE(parse_json("x", f)); + EXPECT_EQUAL(vespalib::slime::DATA::ID, f.get().type().getId()); + Memory m = f.get().asData(); + EXPECT_EQUAL(0u, m.size); + + EXPECT_TRUE(parse_json("x0000", f)); + EXPECT_EQUAL(vespalib::slime::DATA::ID, f.get().type().getId()); + m = f.get().asData(); + EXPECT_EQUAL(2u, m.size); + EXPECT_EQUAL(0, m.data[0]); + EXPECT_EQUAL(0, m.data[1]); + + EXPECT_TRUE(parse_json("x1234567890abcdefABCDEF", f)); + EXPECT_EQUAL(vespalib::slime::DATA::ID, f.get().type().getId()); + m = f.get().asData(); + EXPECT_EQUAL(11u, m.size); + EXPECT_EQUAL((char)0x12, m.data[0]); + EXPECT_EQUAL((char)0x34, m.data[1]); + EXPECT_EQUAL((char)0x56, m.data[2]); + EXPECT_EQUAL((char)0x78, m.data[3]); + EXPECT_EQUAL((char)0x90, m.data[4]); + EXPECT_EQUAL((char)0xAB, m.data[5]); + EXPECT_EQUAL((char)0xCD, m.data[6]); + EXPECT_EQUAL((char)0xEF, m.data[7]); + EXPECT_EQUAL((char)0xAB, m.data[8]); + EXPECT_EQUAL((char)0xCD, m.data[9]); + EXPECT_EQUAL((char)0xEF, m.data[10]); +} + TEST_F("decode empty array", Slime) { EXPECT_TRUE(parse_json("[]", f)); EXPECT_EQUAL(vespalib::slime::ARRAY::ID, f.get().type().getId()); @@ -301,13 +331,18 @@ TEST_F("decode array", Slime) { } TEST_F("decode object", Slime) { - EXPECT_TRUE(parse_json("{\"a\":123,\"b\":0.5,\"c\":\"foo\",\"d\":true}", f)); + EXPECT_TRUE(parse_json("{\"a\":123,\"b\":0.5,\"c\":\"foo\",\"d\":true,\"e\":xff0011}", f)); EXPECT_EQUAL(vespalib::slime::OBJECT::ID, f.get().type().getId()); - EXPECT_EQUAL(4u, f.get().children()); + EXPECT_EQUAL(5u, f.get().children()); EXPECT_EQUAL(123.0, f.get()["a"].asDouble()); EXPECT_EQUAL(0.5, f.get()["b"].asDouble()); EXPECT_EQUAL(std::string("foo"), f.get()["c"].asString().make_string()); EXPECT_EQUAL(true, f.get()["d"].asBool()); + Memory m = f.get()["e"].asData(); + EXPECT_EQUAL(3u, m.size); + EXPECT_EQUAL((char)255, m.data[0]); + EXPECT_EQUAL((char)0, m.data[1]); + EXPECT_EQUAL((char)17, m.data[2]); } TEST_F("decode nesting", Slime) { |