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 2022/10/30 13:24:21 UTC

svn commit: r1904934 - /pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/ScratchFileBufferTest.java

Author: lehmi
Date: Sun Oct 30 13:24:21 2022
New Revision: 1904934

URL: http://svn.apache.org/viewvc?rev=1904934&view=rev
Log:
PDFBOX-5536: add tests

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

Modified: pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/ScratchFileBufferTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/ScratchFileBufferTest.java?rev=1904934&r1=1904933&r2=1904934&view=diff
==============================================================================
--- pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/ScratchFileBufferTest.java (original)
+++ pdfbox/trunk/io/src/test/java/org/apache/pdfbox/io/ScratchFileBufferTest.java Sun Oct 30 13:24:21 2022
@@ -17,7 +17,11 @@
 package org.apache.pdfbox.io;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.io.EOFException;
 import java.io.IOException;
 
 import org.junit.jupiter.api.Test;
@@ -44,7 +48,7 @@ class ScratchFileBufferTest
     {
         try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
         {
-            ScratchFileBuffer scratchFileBuffer = new ScratchFileBuffer(scratchFile);
+            RandomAccess scratchFileBuffer = scratchFile.createBuffer();
             byte[] bytes = new byte[PAGE_SIZE];
             for (int i = 0; i < NUM_ITERATIONS; i++)
             {
@@ -60,4 +64,109 @@ class ScratchFileBufferTest
             }
         }
     }
+
+    @Test
+    void testBufferLength() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            byte[] bytes = new byte[PAGE_SIZE];
+            RandomAccess scratchFileBuffer1 = scratchFile.createBuffer();
+            scratchFileBuffer1.write(bytes);
+            assertEquals(PAGE_SIZE, scratchFileBuffer1.length());
+        }
+    }
+
+    @Test
+    void testBufferSeek() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            byte[] bytes = new byte[PAGE_SIZE];
+            RandomAccess scratchFileBuffer1 = scratchFile.createBuffer();
+            scratchFileBuffer1.write(bytes);
+            assertThrows(IOException.class, () -> scratchFileBuffer1.seek(-1));
+            assertThrows(EOFException.class, () -> scratchFileBuffer1.seek(PAGE_SIZE + 1));
+        }
+    }
+
+    @Test
+    void testBufferEOF() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            byte[] bytes = new byte[PAGE_SIZE];
+            RandomAccess scratchFileBuffer1 = scratchFile.createBuffer();
+            scratchFileBuffer1.write(bytes);
+            scratchFileBuffer1.seek(0);
+            assertFalse(scratchFileBuffer1.isEOF());
+            scratchFileBuffer1.seek(PAGE_SIZE);
+            assertTrue(scratchFileBuffer1.isEOF());
+        }
+    }
+
+    @Test
+    void testAlreadyClose() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            byte[] bytes = new byte[PAGE_SIZE];
+            RandomAccess scratchFileBuffer = scratchFile.createBuffer();
+            scratchFileBuffer.write(bytes);
+            scratchFileBuffer.close();
+            assertThrows(IOException.class, () -> scratchFileBuffer.seek(0));
+        }
+    }
+
+    @Test
+    void testBuffersClosed() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            byte[] bytes = new byte[PAGE_SIZE];
+            RandomAccess scratchFileBuffer1 = scratchFile.createBuffer();
+            scratchFileBuffer1.write(bytes);
+            RandomAccess scratchFileBuffer2 = scratchFile.createBuffer();
+            scratchFileBuffer2.write(bytes);
+            RandomAccess scratchFileBuffer3 = scratchFile.createBuffer();
+            scratchFileBuffer3.write(bytes);
+            RandomAccess scratchFileBuffer4 = scratchFile.createBuffer();
+            scratchFileBuffer4.write(bytes);
+
+            // close two of the buffers explicitly
+            scratchFileBuffer1.close();
+            scratchFileBuffer3.close();
+
+            // check status
+            assertTrue(scratchFileBuffer1.isClosed());
+            assertFalse(scratchFileBuffer2.isClosed());
+            assertTrue(scratchFileBuffer3.isClosed());
+            assertFalse(scratchFileBuffer4.isClosed());
+
+            // closing ScratchFile shall close all remaining buffers which aren't closed yet
+            scratchFile.close();
+            assertTrue(scratchFileBuffer2.isClosed());
+            assertTrue(scratchFileBuffer4.isClosed());
+        }
+    }
+
+    @Test
+    void testView() throws IOException
+    {
+        try (ScratchFile scratchFile = new ScratchFile(MemoryUsageSetting.setupTempFileOnly()))
+        {
+            RandomAccess scratchFileBuffer = scratchFile.createBuffer();
+            byte[] inputValues = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+            scratchFileBuffer.write(inputValues);
+            try (RandomAccessReadView view = scratchFileBuffer.createView(3, 5))
+            {
+                assertEquals(0, view.getPosition());
+                assertEquals(3, view.read());
+                assertEquals(4, view.read());
+                assertEquals(5, view.read());
+                assertEquals(3, view.getPosition());
+            }
+        }
+    }
+
 }