From e1e5e2bf72391c7fae8c2a6f5e958fd0c885ae9c Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Wed, 22 Apr 2020 20:22:02 -0700 Subject: [PATCH] And finally, async parser tests for #611 too --- ...ersTest.java => AsyncNaNHandlingTest.java} | 2 +- ...ava => AsyncNonStdNumberHandlingTest.java} | 56 ++++++++++++++++++- .../read/NonStandardNumberParsingTest.java} | 4 +- .../read/NonStandardParserFeaturesTest.java | 1 + 4 files changed, 57 insertions(+), 6 deletions(-) rename src/test/java/com/fasterxml/jackson/core/json/async/{AsyncNonStdNumbersTest.java => AsyncNaNHandlingTest.java} (99%) rename src/test/java/com/fasterxml/jackson/core/json/async/{AsyncNumberLeadingZeroesTest.java => AsyncNonStdNumberHandlingTest.java} (65%) rename src/test/java/com/fasterxml/jackson/{failing/NonStandardNumbers611Test.java => core/read/NonStandardNumberParsingTest.java} (95%) diff --git a/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumbersTest.java b/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNaNHandlingTest.java similarity index 99% rename from src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumbersTest.java rename to src/test/java/com/fasterxml/jackson/core/json/async/AsyncNaNHandlingTest.java index ad261ced81..10cc6ce78b 100644 --- a/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumbersTest.java +++ b/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNaNHandlingTest.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.core.json.JsonReadFeature; import com.fasterxml.jackson.core.testsupport.AsyncReaderWrapper; -public class AsyncNonStdNumbersTest extends AsyncTestBase +public class AsyncNaNHandlingTest extends AsyncTestBase { private final JsonFactory DEFAULT_F = new JsonFactory(); diff --git a/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNumberLeadingZeroesTest.java b/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumberHandlingTest.java similarity index 65% rename from src/test/java/com/fasterxml/jackson/core/json/async/AsyncNumberLeadingZeroesTest.java rename to src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumberHandlingTest.java index 066b0e1670..65e949c14b 100644 --- a/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNumberLeadingZeroesTest.java +++ b/src/test/java/com/fasterxml/jackson/core/json/async/AsyncNonStdNumberHandlingTest.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.core.json.JsonReadFeature; import com.fasterxml.jackson.core.testsupport.AsyncReaderWrapper; -public class AsyncNumberLeadingZeroesTest extends AsyncTestBase +public class AsyncNonStdNumberHandlingTest extends AsyncTestBase { @SuppressWarnings("deprecation") public void testDefaultsForAsync() throws Exception { @@ -77,7 +77,7 @@ public void testLeadingZeroesFloat() throws Exception _testLeadingZeroesFloat("-000.5 ", -0.5); } - public void _testLeadingZeroesFloat(String valueStr, double value) throws Exception + private void _testLeadingZeroesFloat(String valueStr, double value) throws Exception { // first: verify that we get an exception JsonFactory f = new JsonFactory(); @@ -104,8 +104,58 @@ public void _testLeadingZeroesFloat(String valueStr, double value) throws Except p.close(); } + public void testLeadingPeriodFloat() throws Exception + { + _testLeadingPeriodFloat(".25", 0.25, 1); + _testLeadingPeriodFloat(".25", 0.25, 100); + _testLeadingPeriodFloat(" .25 ", 0.25, 1); + _testLeadingPeriodFloat(" .25 ", 0.25, 100); + + _testLeadingPeriodFloat(".1", 0.1, 1); + _testLeadingPeriodFloat(".1", 0.1, 100); + + _testLeadingPeriodFloat(".6125 ", 0.6125, 1); + _testLeadingPeriodFloat(".6125 ", 0.6125, 100); + } + + private void _testLeadingPeriodFloat(String valueStr, double value, int bytesPerRead) + throws Exception + { + // first: verify that we get an exception + + JsonFactory f = new JsonFactory(); + String JSON = valueStr; + AsyncReaderWrapper p = createParser(f, JSON, bytesPerRead); + try { + p.nextToken(); + p.currentText(); + fail("Should have thrown an exception for doc <"+JSON+">"); + } catch (JsonParseException e) { + verifyException(e, "Unexpected character ('.'"); + verifyException(e, "expected a valid value"); + } finally { + p.close(); + } + + // and then verify it's ok when enabled + f = JsonFactory.builder() + .enable(JsonReadFeature.ALLOW_LEADING_DECIMAL_POINT_FOR_NUMBERS) + .build(); + p = createParser(f, JSON, bytesPerRead); + assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); + assertEquals(value, p.getDoubleValue()); + assertEquals(valueStr.trim(), p.currentText()); + p.close(); + } + private AsyncReaderWrapper createParser(JsonFactory f, String doc) throws IOException { - return asyncForBytes(f, 1, _jsonDoc(doc), 1); + return createParser(f, doc, 1); + } + + private AsyncReaderWrapper createParser(JsonFactory f, String doc, int bytesPerRead) + throws IOException + { + return asyncForBytes(f, bytesPerRead, _jsonDoc(doc), 1); } } diff --git a/src/test/java/com/fasterxml/jackson/failing/NonStandardNumbers611Test.java b/src/test/java/com/fasterxml/jackson/core/read/NonStandardNumberParsingTest.java similarity index 95% rename from src/test/java/com/fasterxml/jackson/failing/NonStandardNumbers611Test.java rename to src/test/java/com/fasterxml/jackson/core/read/NonStandardNumberParsingTest.java index b7736f97f5..82537b1211 100644 --- a/src/test/java/com/fasterxml/jackson/failing/NonStandardNumbers611Test.java +++ b/src/test/java/com/fasterxml/jackson/core/read/NonStandardNumberParsingTest.java @@ -1,9 +1,9 @@ -package com.fasterxml.jackson.failing; +package com.fasterxml.jackson.core.read; import com.fasterxml.jackson.core.*; import com.fasterxml.jackson.core.json.JsonReadFeature; -public class NonStandardNumbers611Test +public class NonStandardNumberParsingTest extends com.fasterxml.jackson.core.BaseTest { private final JsonFactory JSON_F = JsonFactory.builder() diff --git a/src/test/java/com/fasterxml/jackson/core/read/NonStandardParserFeaturesTest.java b/src/test/java/com/fasterxml/jackson/core/read/NonStandardParserFeaturesTest.java index 10fbeb7b5d..2aefef58ea 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/NonStandardParserFeaturesTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/NonStandardParserFeaturesTest.java @@ -145,6 +145,7 @@ private void _testLeadingZeroes(int mode, boolean appendSpace) throws Exception // representation or not? Won't, for now: assertEquals("0", p.getText()); assertToken(JsonToken.END_ARRAY, p.nextToken()); + p.close(); } private void _testAllowNaN(int mode) throws Exception