UTF8ParsingTest.java
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 + "' }");
// https://github.com/FasterXML/jackson-dataformats-text/issues/497
@Test
public void utf8Char3Bytes() 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();
}
}