Author: tilman Date: Sat Apr 26 05:03:32 2025 New Revision: 1925272 URL: http://svn.apache.org/viewvc?rev=1925272&view=rev Log: PDFBOX-5965: improve test coverage
Modified: pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java Modified: pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java URL: http://svn.apache.org/viewvc/pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java?rev=1925272&r1=1925271&r2=1925272&view=diff ============================================================================== --- pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java (original) +++ pdfbox/branches/3.0/io/src/test/java/org/apache/pdfbox/io/NonSeekableRandomAccessReadInputStreamTest.java Sat Apr 26 05:03:32 2025 @@ -244,6 +244,50 @@ class NonSeekableRandomAccessReadInputSt } } + @Test + void testRewindAcrossBuffers2() throws IOException + { + byte[] ba = new byte[4096 * 2]; + ba[4095] = 1; + ba[4096] = 2; + ba[4097] = 3; + ba[4096 * 2 - 1] = 4; + ByteArrayInputStream bais = new ByteArrayInputStream(ba); + try (RandomAccessRead rar = new NonSeekableRandomAccessReadInputStream(bais)) + { + assertEquals(0, rar.length()); // not really what I'd expect... + int len = rar.read(new byte[4096 + 1]); + assertEquals(4096 * 2, rar.length()); + assertEquals(4096 + 1, len); + rar.rewind(2); + assertEquals(1, rar.read()); + assertEquals(2, rar.read()); + assertEquals(3, rar.read()); + assertEquals(4096 * 2, rar.length()); + + byte[] buf = new byte[4096]; + len = rar.read(buf); + assertEquals(4096 - 2, len); + assertEquals(4, buf[len-1]); + assertEquals(-1, rar.read()); + assertEquals(-1, rar.read(new byte[1])); + } + } + + @Test + void testAccessClosed() throws IOException + { + byte[] ba = new byte[1]; + ba[0] = 1; + ByteArrayInputStream bais = new ByteArrayInputStream(ba); + RandomAccessRead rar = new NonSeekableRandomAccessReadInputStream(bais); + assertEquals(1, rar.read()); + assertEquals(-1, rar.read()); + rar.close(); + Assertions.assertThrows(IOException.class, () -> rar.read(), + "read() should have thrown an IOException"); + } + private byte[] createRandomData() { final long seed = new Random().nextLong();