From d337dd7d4ab70284a7cb4dc85aae8d9de37f8be0 Mon Sep 17 00:00:00 2001 From: "mike.ford" Date: Fri, 11 Aug 2017 11:17:53 -0400 Subject: [PATCH] IterImplForStreaming now check for '+' character. Previously scientific notation like "1.0e+10" would fail. --- .../java/com/jsoniter/IterImplForStreaming.java | 1 + .../java/com/jsoniter/IterImplForStreamingTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 src/test/java/com/jsoniter/IterImplForStreamingTest.java diff --git a/src/main/java/com/jsoniter/IterImplForStreaming.java b/src/main/java/com/jsoniter/IterImplForStreaming.java index 52c94069..eb72c667 100644 --- a/src/main/java/com/jsoniter/IterImplForStreaming.java +++ b/src/main/java/com/jsoniter/IterImplForStreaming.java @@ -543,6 +543,7 @@ public static final String readNumber(final JsonIterator iter) throws IOExceptio byte c = iter.buf[i]; switch (c) { case '-': + case '+': case '.': case 'e': case 'E': diff --git a/src/test/java/com/jsoniter/IterImplForStreamingTest.java b/src/test/java/com/jsoniter/IterImplForStreamingTest.java new file mode 100644 index 00000000..4efee7e3 --- /dev/null +++ b/src/test/java/com/jsoniter/IterImplForStreamingTest.java @@ -0,0 +1,13 @@ +package com.jsoniter; + +import junit.framework.TestCase; + +public class IterImplForStreamingTest extends TestCase { + + public void testReadMaxDouble() throws Exception { + String maxDouble = "1.7976931348623157e+308"; + JsonIterator iter = JsonIterator.parse("1.7976931348623157e+308"); + String number = IterImplForStreaming.readNumber(iter); + assertEquals(maxDouble, number); + } +} \ No newline at end of file