diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-07-04 13:50:24 +0200 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2018-07-04 13:50:24 +0200 |
commit | a3c0fda160eee311dba1bf95b2d10df9344b3b45 (patch) | |
tree | f9cdc06d9f5b63b4bafb2673345fc176794d03a5 /vespajlib | |
parent | e358133e2a941afefa6639d44af46f90d7482a1f (diff) |
add unit test and fix decoding of unicode escapes
Diffstat (limited to 'vespajlib')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java | 1 | ||||
-rw-r--r-- | vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java index 3f73faf289d..71eaa7f8b25 100644 --- a/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java +++ b/vespajlib/src/main/java/com/yahoo/slime/JsonDecoder.java @@ -210,6 +210,7 @@ public class JsonDecoder { private static byte[] unicodeStart = {'\\', 'u'}; private long dequoteUtf16() { + next(); long codepoint = readHexValue(4); if (codepoint >= 0xd800) { if (codepoint < 0xdc00) { // high diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java index d82cb61a08c..44aa4ab2ff7 100644 --- a/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java +++ b/vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java @@ -198,6 +198,15 @@ public class JsonFormatTestCase { } @Test + public void testDecodeUnicodeAmp() { + final String json = "{\"body\":\"some text\\u0026more text\"}"; + Slime slime = new Slime(); + new JsonDecoder().decode(slime, Utf8.toBytesStd(json)); + Cursor a = slime.get().field("body"); + assertThat(a.asString(), is("some text&more text")); + } + + @Test public void testDecodeEncodeUtf8() { final String json = "{\n" + " \"rules\": \"# Use unicode equivalents in java source:\\n" + |