int position = 0; final int readlimit = 10; final Reader reader = new TestNullReader(100, true, false);
@Test public void testReadCharArray() throws Exception { final char[] chars = new char[10]; final Reader reader = new TestNullReader(15);
@Test public void testRead() throws Exception { final int size = 5; final TestNullReader reader = new TestNullReader(size); for (int i = 0; i < size; i++) { assertEquals("Check Value [" + i + "]", i, reader.read()); } // Check End of File assertEquals("End of File", -1, reader.read()); // Test reading after the end of file try { final int result = reader.read(); fail("Should have thrown an IOException, value=[" + result + "]"); } catch (final IOException e) { assertEquals("Read after end of file", e.getMessage()); } // Close - should reset reader.close(); assertEquals("Available after close", 0, reader.getPosition()); }
@Test public void testMarkNotSupported() throws Exception { final Reader reader = new TestNullReader(100, false, true); assertFalse("Mark Should NOT be Supported", reader.markSupported()); try { reader.mark(5); fail("mark() should throw UnsupportedOperationException"); } catch (final UnsupportedOperationException e) { assertEquals("mark() error message", "Mark not supported", e.getMessage()); } try { reader.reset(); fail("reset() should throw UnsupportedOperationException"); } catch (final UnsupportedOperationException e) { assertEquals("reset() error message", "Mark not supported", e.getMessage()); } reader.close(); }
@Test public void testSkip() throws Exception { final Reader reader = new TestNullReader(10, true, false); assertEquals("Read 1", 0, reader.read()); assertEquals("Read 2", 1, reader.read()); assertEquals("Skip 1", 5, reader.skip(5)); assertEquals("Read 3", 7, reader.read()); assertEquals("Skip 2", 2, reader.skip(5)); // only 2 left to skip assertEquals("Skip 3 (EOF)", -1, reader.skip(5)); // End of file try { reader.skip(5); // fail("Expected IOException for skipping after end of file"); } catch (final IOException e) { assertEquals("Skip after EOF IOException message", "Skip after end of file", e.getMessage()); } reader.close(); }
@Test public void testEOFException() throws Exception { final Reader reader = new TestNullReader(2, false, true); assertEquals("Read 1", 0, reader.read()); assertEquals("Read 2", 1, reader.read()); try { final int result = reader.read(); fail("Should have thrown an EOFException, value=[" + result + "]"); } catch (final EOFException e) { // expected } reader.close(); }
@Override protected void processChars(final char[] chars, final int offset, final int length) { final int startPos = (int)getPosition() - length; for (int i = offset; i < length; i++) { chars[i] = (char)(startPos + i); } }
@Override protected int processChar() { return (int)getPosition() - 1; } @Override