BigIntegerParserTest.java
package com.fasterxml.jackson.core.io;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
class BigIntegerParserTest extends com.fasterxml.jackson.core.JUnit5TestBase {
@Test
void fastParseBigIntegerFailsWithENotation() {
String num = "2e308";
try {
BigIntegerParser.parseWithFastParser(num);
fail("expected NumberFormatException");
} catch (NumberFormatException nfe) {
// expected
}
}
@Test
void longStringFastParseBigInteger() {
try {
BigIntegerParser.parseWithFastParser(genLongString());
fail("expected NumberFormatException");
} catch (NumberFormatException nfe) {
assertTrue(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
assertTrue(nfe.getMessage().contains("truncated"), "exception message value contains: truncated");
assertTrue(nfe.getMessage().contains("BigInteger"), "exception message value contains: BigInteger");
}
}
@Test
void longStringFastParseBigIntegerRadix() {
try {
BigIntegerParser.parseWithFastParser(genLongString(), 8);
fail("expected NumberFormatException");
} catch (NumberFormatException nfe) {
assertTrue(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
assertTrue(nfe.getMessage().contains("truncated"), "exception message value contains: truncated");
assertTrue(nfe.getMessage().contains("radix 8"), "exception message value contains: radix 8");
assertTrue(nfe.getMessage().contains("BigInteger"), "exception message value contains: BigInteger");
}
}
static String genLongString() {
final int len = 1500;
final StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++) {
sb.append("A");
}
return sb.toString();
}
}