From 11807e7c0fb95c2b39a82c628dc194638d542a07 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 20 Feb 2025 20:02:47 +0100 Subject: [PATCH 1/2] add utf8 parsing test --- .../jackson/core/read/UTF8ParsingTest.java | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java diff --git a/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java new file mode 100644 index 0000000000..768cbb12e0 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java @@ -0,0 +1,49 @@ +package com.fasterxml.jackson.core.read; + +import com.fasterxml.jackson.core.JUnit5TestBase; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.TokenStreamFactory; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class UTF8ParsingTest extends JUnit5TestBase +{ + private TokenStreamFactory JSON_F = newStreamFactory(); + + final String testValue = createTestString(); + final String INPUT_JSON = a2q("{ 'value': '" + testValue +"' }"); + + // [jackson-core#1397] + @Test + public void issue1397() throws Exception + { + for (int mode : ALL_MODES) { + testIssue(JSON_F, mode, INPUT_JSON); + } + } + + private void testIssue(final TokenStreamFactory jsonF, + final int mode, + final String json) throws Exception + { + try (JsonParser p = createParser(jsonF, mode, json)) { + assertToken(JsonToken.START_OBJECT, p.nextToken()); + assertToken(JsonToken.FIELD_NAME, p.nextToken()); + assertEquals("value", p.currentName()); + assertToken(JsonToken.VALUE_STRING, p.nextToken()); + assertEquals(testValue, p.getText()); + assertToken(JsonToken.END_OBJECT, p.nextToken()); + } + } + + private static String createTestString() { + StringBuilder sb = new StringBuilder(4001); + for (int i = 0; i < 4000; ++i) { + sb.append('a'); + } + sb.append('\u5496'); + return sb.toString(); + } +} From 16b22e9eecce96443cb0ba2fd54ab2ae7d13299e Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 20 Feb 2025 20:19:58 +0100 Subject: [PATCH 2/2] Update UTF8ParsingTest.java --- .../com/fasterxml/jackson/core/read/UTF8ParsingTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java index 768cbb12e0..5046d084b5 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/UTF8ParsingTest.java @@ -13,11 +13,11 @@ class UTF8ParsingTest extends JUnit5TestBase private TokenStreamFactory JSON_F = newStreamFactory(); final String testValue = createTestString(); - final String INPUT_JSON = a2q("{ 'value': '" + testValue +"' }"); + final String INPUT_JSON = a2q("{ 'value': '" + testValue + "' }"); - // [jackson-core#1397] + // https://github.com/FasterXML/jackson-dataformats-text/issues/497 @Test - public void issue1397() throws Exception + public void utf8Char3Bytes() throws Exception { for (int mode : ALL_MODES) { testIssue(JSON_F, mode, INPUT_JSON);