-
-
Notifications
You must be signed in to change notification settings - Fork 816
Closed
Milestone
Description
The following test passes with jackson-core-2.10.0 and fails jackson-2.10.1:
public void testBigPayload() throws IOException {
JsonLocation loc;
JsonParser p;
String doc = "{\"key\":\"" + generateRandomAlpha(50000) + "\"}";
p = createParserUsingStream(JSON_F, doc, "UTF-8");
assertToken(JsonToken.START_OBJECT, p.nextToken());
loc = p.getTokenLocation();
assertEquals(0, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(1, loc.getColumnNr());
loc = p.getCurrentLocation();
assertEquals(1, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(2, loc.getColumnNr());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
loc = p.getTokenLocation();
assertEquals(1, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(2, loc.getColumnNr());
loc = p.getCurrentLocation();
assertEquals(8, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(9, loc.getColumnNr());
assertToken(JsonToken.VALUE_STRING, p.nextToken());
loc = p.getTokenLocation();
assertEquals(7, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(8, loc.getColumnNr());
loc = p.getCurrentLocation();
assertEquals(8, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(9, loc.getColumnNr());
p.getTextCharacters();
loc = p.getTokenLocation();
assertEquals(7, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(8, loc.getColumnNr());
loc = p.getCurrentLocation();
assertEquals(doc.length() - 1, loc.getByteOffset());
assertEquals(-1L, loc.getCharOffset());
assertEquals(1, loc.getLineNr());
assertEquals(doc.length(), loc.getColumnNr());
}
private String generateRandomAlpha(int length)
{
StringBuilder sb = new StringBuilder(length);
Random rnd = new Random(length);
for (int i = 0; i < length; ++i) {
// let's limit it not to include surrogate pairs:
char ch = (char) ('A' + rnd.nextInt(26));
sb.append(ch);
}
return sb.toString();
}
In 2.10.1, the test fails with the following output:
Expected :50009
Actual :44019
Metadata
Metadata
Assignees
Labels
No labels