From 4505c5b22ce84e6d15aa97e1917452437691648f Mon Sep 17 00:00:00 2001 From: Christian Basler Date: Wed, 1 Feb 2017 08:13:47 +0100 Subject: [PATCH] Fixed MPString#toJson and added test --- src/main/java/ch/dissem/msgpack/types/MPString.java | 2 +- src/test/java/ch/dissem/msgpack/ReaderTest.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/ch/dissem/msgpack/types/MPString.java b/src/main/java/ch/dissem/msgpack/types/MPString.java index 3ffd2d2..e0f50bb 100644 --- a/src/main/java/ch/dissem/msgpack/types/MPString.java +++ b/src/main/java/ch/dissem/msgpack/types/MPString.java @@ -147,7 +147,7 @@ public class MPString implements MPType, CharSequence { if (c < ' ') { result.append("\\u"); String hex = Integer.toHexString(c); - for (int j = 0; j - hex.length() < 4; j++) { + for (int j = 0; j + hex.length() < 4; j++) { result.append('0'); } result.append(hex); diff --git a/src/test/java/ch/dissem/msgpack/ReaderTest.java b/src/test/java/ch/dissem/msgpack/ReaderTest.java index d0b1bef..cc7b12c 100644 --- a/src/test/java/ch/dissem/msgpack/ReaderTest.java +++ b/src/test/java/ch/dissem/msgpack/ReaderTest.java @@ -156,6 +156,16 @@ public class ReaderTest { ensureStringIsEncodedAndDecodedCorrectly(65536); } + @Test + public void ensureJsonStringsAreEscapedCorrectly() throws Exception { + StringBuilder builder = new StringBuilder(); + for (char c = '\u0001'; c < ' '; c++) { + builder.append(c); + } + MPString string = new MPString(builder.toString()); + assertThat(string.toJson(), is("\"\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f\"")); + } + private void ensureStringIsEncodedAndDecodedCorrectly(int length) throws Exception { MPString value = new MPString(stringWithLength(length)); ByteArrayOutputStream out = new ByteArrayOutputStream();