From ad1355f35a54981df5403edcbf2290a244fac978 Mon Sep 17 00:00:00 2001 From: salyh Date: Fri, 11 Jul 2014 22:45:09 +0200 Subject: [PATCH 06/14] parser now fail fast if no next event left, some additional testcases added Signed-off-by: salyh --- .../apache/fleece/core/JsonBaseStreamParser.java | 5 +++++ .../java/org/apache/fleece/core/JsonParserTest.java | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/fleece-core/src/main/java/org/apache/fleece/core/JsonBaseStreamParser.java b/fleece-core/src/main/java/org/apache/fleece/core/JsonBaseStreamParser.java index 4e98e5f..abbdeaf 100644 --- a/fleece-core/src/main/java/org/apache/fleece/core/JsonBaseStreamParser.java +++ b/fleece-core/src/main/java/org/apache/fleece/core/JsonBaseStreamParser.java @@ -215,6 +215,11 @@ public abstract class JsonBaseStreamParser implements JsonChars, @Override public final Event next() { + + //fast fail + if(!hasNext()) { + throw new NoSuchElementException(); + } int dosCount = 0; lastEvent = event; diff --git a/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java b/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java index a4b6418..5be07b2 100644 --- a/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java +++ b/fleece-core/src/test/java/org/apache/fleece/core/JsonParserTest.java @@ -689,6 +689,20 @@ public class JsonParserTest { } @Test(expected = JsonParsingException.class) + public void literalFailChecksTrue() { + // using a reader as wrapper of parser + + Json.createReader(new ByteArrayInputStream("{\"z\":truet}".getBytes())).read(); + } + + @Test(expected = JsonParsingException.class) + public void literalFailChecksNull() { + // using a reader as wrapper of parser + + Json.createReader(new ByteArrayInputStream("{\"z\":nulll}".getBytes())).read(); + } + + @Test(expected = JsonParsingException.class) public void zeroByteInput() { // using a reader as wrapper of parser @@ -702,6 +716,13 @@ public class JsonParserTest { assertEquals(0L, Json.createReader(new ByteArrayInputStream("[0]".getBytes())).readArray().getJsonNumber(0).longValue()); } + @Test + public void shortestNonEmtyJsonFileWithWhiteSpaceChars() { + // using a reader as wrapper of parser + + assertEquals(0L, Json.createReader(new ByteArrayInputStream(" \n\n [ 0 ] \n\n".getBytes())).readArray().getJsonNumber(0).longValue()); + } + @Test(expected = JsonParsingException.class) public void fail1() { -- 1.8.5.2 (Apple Git-48)