You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2020/08/12 05:59:30 UTC

svn commit: r1880796 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java

Author: lehmi
Date: Wed Aug 12 05:59:30 2020
New Revision: 1880796

URL: http://svn.apache.org/viewvc?rev=1880796&view=rev
Log:
PDFBOX-4836: add test case for empty streams

Modified:
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java?rev=1880796&r1=1880795&r2=1880796&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/io/SequenceRandomAccessReadTest.java Wed Aug 12 05:59:30 2020
@@ -213,4 +213,47 @@ public class SequenceRandomAccessReadTes
         {
         }
     }
+
+    @Test
+    public void TestEmptyStream() throws IOException
+    {
+        String input1 = "01234567890123456789";
+        RandomAccessReadBuffer randomAccessReadBuffer1 = new RandomAccessReadBuffer(
+                input1.getBytes());
+        String input2 = "abcdefghijklmnopqrst";
+        RandomAccessReadBuffer randomAccessReadBuffer2 = new RandomAccessReadBuffer(
+                input2.getBytes());
+        RandomAccessReadBuffer emptyBuffer = new RandomAccessReadBuffer("".getBytes());
+
+        List<RandomAccessRead> inputList = Arrays.asList(randomAccessReadBuffer1, emptyBuffer,
+                randomAccessReadBuffer2);
+        SequenceRandomAccessRead sequenceRandomAccessRead = new SequenceRandomAccessRead(inputList);
+
+        // check length
+        assertEquals(sequenceRandomAccessRead.length(), input1.length() + input2.length());
+
+        // read from both parts of the sequence
+        byte[] bytesRead = new byte[10];
+        sequenceRandomAccessRead.seek(15);
+        assertEquals(10, sequenceRandomAccessRead.read(bytesRead));
+        assertEquals("56789abcde", new String(bytesRead));
+
+        // rewind and read again
+        sequenceRandomAccessRead.rewind(15);
+        bytesRead = new byte[5];
+        assertEquals(5, sequenceRandomAccessRead.read(bytesRead));
+        assertEquals("01234", new String(bytesRead));
+
+        // check EOF when reading
+        bytesRead = new byte[5];
+        sequenceRandomAccessRead.seek(38);
+        assertEquals(2, sequenceRandomAccessRead.read(bytesRead));
+        assertEquals("st", new String(bytesRead, 0, 2));
+
+        // check EOF after seek
+        sequenceRandomAccessRead.seek(40);
+        assertTrue(sequenceRandomAccessRead.isEOF());
+
+        sequenceRandomAccessRead.close();
+    }
 }