summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-07-04 13:50:24 +0200
committerArne Juul <arnej@yahoo-inc.com>2018-07-04 13:50:24 +0200
commita3c0fda160eee311dba1bf95b2d10df9344b3b45 (patch)
treef9cdc06d9f5b63b4bafb2673345fc176794d03a5 /vespajlib
parente358133e2a941afefa6639d44af46f90d7482a1f (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.java1
-rw-r--r--vespajlib/src/test/java/com/yahoo/slime/JsonFormatTestCase.java9
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" +