private static void assertParseException(int offset, String message, final String json) { ParseException exception = assertException( ParseException.class, new Runnable() { public void run() { parse(json); } }); assertEquals(offset, exception.getOffset()); assertThat(exception.getMessage(), StringStartsWith.startsWith(message + " at")); }
private static void assertParseException(int offset, int line, int column, final String json) { ParseException exception = assertException( ParseException.class, new Runnable() { public void run() { parse(json); } }); assertEquals("offset", offset, exception.getOffset()); assertEquals("line", line, exception.getLine()); assertEquals("column", column, exception.getColumn()); }
@Test public void parse_rejectsEmptyReader() { ParseException exception = assertException( ParseException.class, new Runnable() { public void run() { try { new JsonParser(new StringReader("")).parse(); } catch (IOException exception) { throw new RuntimeException(exception); } } }); assertEquals(0, exception.getOffset()); assertThat(exception.getMessage(), StringStartsWith.startsWith("Unexpected end of input at")); }
@Test public void parse_handlesPositionsCorrectlyWhenInputExceedsBufferSize() { final String input = "{\n \"a\": 23,\n \"b\": 42,\n}"; ParseException exception = assertException( ParseException.class, new Runnable() { public void run() { try { new JsonParser(new StringReader(input), 3).parse(); } catch (IOException e) { } } }); assertEquals(4, exception.getLine()); assertEquals(0, exception.getColumn()); assertEquals(24, exception.getOffset()); }