You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2020/04/15 10:46:15 UTC

svn commit: r1876545 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java

Author: tilman
Date: Wed Apr 15 10:46:15 2020
New Revision: 1876545

URL: http://svn.apache.org/viewvc?rev=1876545&view=rev
Log:
PDFBOX-4071: use junit 4 classes and refactor to use jdk7 try-with-resources and more nio methods

Modified:
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java?rev=1876545&r1=1876544&r2=1876545&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/TestPDDocument.java Wed Apr 15 10:46:15 2020
@@ -19,50 +19,54 @@ package org.apache.pdfbox.pdmodel;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.Arrays;
 import java.util.Locale;
 
 import org.apache.pdfbox.Loader;
-import org.apache.pdfbox.io.IOUtils;
 
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertThrows;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 /**
- * Testcase introduced with PDFBOX-1581.
+ * Test case introduced with PDFBOX-1581.
  * 
  */
-public class TestPDDocument extends TestCase
+public class TestPDDocument
 {
-    private final File testResultsDir = new File("target/test-output");
+    static private final File TESTRESULTSDIR = new File("target/test-output");
 
-    @Override
-    protected void setUp() throws Exception
+    @BeforeClass
+    static public void setUp() throws Exception
     {
-        super.setUp();
-        testResultsDir.mkdirs();
+        TESTRESULTSDIR.mkdirs();
     }
 
     /**
      * Test document save/load using a stream.
      * @throws IOException if something went wrong
      */
+    @Test
     public void testSaveLoadStream() throws IOException
     {
+        ByteArrayOutputStream baos;
         // Create PDF with one blank page
-        PDDocument document = new PDDocument();
-        document.addPage(new PDPage());
-
-        // Save
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        document.save(baos);
-        document.close();
+        try (PDDocument document = new PDDocument())
+        {
+            document.addPage(new PDPage());
+            // Save
+            baos = new ByteArrayOutputStream();
+            document.save(baos);
+        }
 
         // Verify content
         byte[] pdf = baos.toByteArray();
@@ -70,134 +74,147 @@ public class TestPDDocument extends Test
         assertEquals("%PDF-1.4", new String(Arrays.copyOfRange(pdf, 0, 8), StandardCharsets.UTF_8));
         assertEquals("%%EOF\n", new String(Arrays.copyOfRange(pdf, pdf.length - 6, pdf.length), StandardCharsets.UTF_8));
 
-        // Load
-        PDDocument loadDoc = Loader.loadPDF(new ByteArrayInputStream(pdf));
-        assertEquals(1, loadDoc.getNumberOfPages());
-        loadDoc.close();
+        // reload
+        try (PDDocument loadDoc = Loader.loadPDF(new ByteArrayInputStream(pdf)))
+        {
+            assertEquals(1, loadDoc.getNumberOfPages());
+        }
     }
 
     /**
      * Test document save/load using a file.
      * @throws IOException if something went wrong
      */
+    @Test
     public void testSaveLoadFile() throws IOException
     {
-        // Create PDF with one blank page
-        PDDocument document = new PDDocument();
-        document.addPage(new PDPage());
+        File targetFile = new File(TESTRESULTSDIR, "pddocument-saveloadfile.pdf");
 
-        // Save
-        File targetFile = new File(testResultsDir, "pddocument-saveloadfile.pdf");
-        document.save(targetFile);
-        document.close();
+        // Create PDF with one blank page
+        try (PDDocument document = new PDDocument())
+        {
+            document.addPage(new PDPage());
+            document.save(targetFile);
+        }
 
         // Verify content
         assertTrue(targetFile.length() > 200);
-        InputStream in = new FileInputStream(targetFile);
-        byte[] pdf = IOUtils.toByteArray(in);
-        in.close();
+
+        byte[] pdf = Files.readAllBytes(targetFile.toPath());
+
         assertTrue(pdf.length > 200);
         assertEquals("%PDF-1.4", new String(Arrays.copyOfRange(pdf, 0, 8), StandardCharsets.UTF_8));
         assertEquals("%%EOF\n", new String(Arrays.copyOfRange(pdf, pdf.length - 6, pdf.length), StandardCharsets.UTF_8));
 
-        // Load
-        PDDocument loadDoc = Loader.loadPDF(targetFile);
-        assertEquals(1, loadDoc.getNumberOfPages());
-        loadDoc.close();
+        // reload
+        try (PDDocument loadDoc = Loader.loadPDF(targetFile))
+        {
+            assertEquals(1, loadDoc.getNumberOfPages());
+        }
     }
 
     /**
      * Test get/setVersion.
      * @throws IOException if something went wrong
      */
+    @Test
     public void testVersions() throws IOException
     {
-        PDDocument document = new PDDocument();
         // test default version
-        assertEquals(1.4f, document.getVersion());
-        assertEquals(1.4f, document.getDocument().getVersion());
-        assertEquals("1.4", document.getDocumentCatalog().getVersion());
-        // force downgrading version (header)
-        document.getDocument().setVersion(1.3f);
-        document.getDocumentCatalog().setVersion(null);
-        // test new version (header)
-        assertEquals(1.3f, document.getVersion());
-        assertEquals(1.3f, document.getDocument().getVersion());
-        assertNull(document.getDocumentCatalog().getVersion());
-        document.close();
+        try (PDDocument document = new PDDocument())
+        {
+            // test default version
+            assertEquals(1.4f, document.getVersion(), 0);
+            assertEquals(1.4f, document.getDocument().getVersion(), 0);
+            assertEquals("1.4", document.getDocumentCatalog().getVersion());
+            // force downgrading version (header)
+            document.getDocument().setVersion(1.3f);
+            document.getDocumentCatalog().setVersion(null);
+            // test new version (header)
+            assertEquals(1.3f, document.getVersion(), 0);
+            assertEquals(1.3f, document.getDocument().getVersion(), 0);
+            assertNull(document.getDocumentCatalog().getVersion());
+        }
 
         // check if version downgrade is denied
-        document = new PDDocument();
-        document.setVersion(1.3f);
-        // all versions shall have their default value
-        assertEquals(1.4f, document.getVersion());
-        assertEquals(1.4f, document.getDocument().getVersion());
-        assertEquals("1.4", document.getDocumentCatalog().getVersion());
-        
-        // check version upgrade
-        document.setVersion(1.5f);
-        // overall version has to be 1.5f
-        assertEquals(1.5f, document.getVersion());
-        // header version has to be unchanged
-        assertEquals(1.4f, document.getDocument().getVersion());
-        // catalog version version has to be 1.5
-        assertEquals("1.5", document.getDocumentCatalog().getVersion());
-        document.close();
+        try (PDDocument document = new PDDocument())
+        {
+            document.setVersion(1.3f);
+            // all versions shall have their default value
+            assertEquals(1.4f, document.getVersion(), 0);
+            assertEquals(1.4f, document.getDocument().getVersion(), 0);
+            assertEquals("1.4", document.getDocumentCatalog().getVersion());
+
+            // check version upgrade
+            document.setVersion(1.5f);
+            // overall version has to be 1.5f
+            assertEquals(1.5f, document.getVersion(), 0);
+            // header version has to be unchanged
+            assertEquals(1.4f, document.getDocument().getVersion(), 0);
+            // catalog version version has to be 1.5
+            assertEquals("1.5", document.getDocumentCatalog().getVersion());
+        }
     }
 
     /**
      * Test whether a bad file can be deleted after load() failed.
      *
-     * @throws java.io.FileNotFoundException
+     * @throws java.io.IOException
      */
-    public void testDeleteBadFile() throws FileNotFoundException
+    @Test
+    public void testDeleteBadFile() throws IOException
     {
-        File f = new File("test.pdf");
-        PrintWriter pw = new PrintWriter(new FileOutputStream(f));
-        pw.write("<script language='JavaScript'>");
-        pw.close();
-        PDDocument doc = null;
-        try
+        File f = new File(TESTRESULTSDIR, "testDeleteBadFile.pdf");
+        System.out.println("f: " + f.getAbsolutePath());
+        try (PrintWriter pw = new PrintWriter(new FileOutputStream(f)))
         {
-            doc = Loader.loadPDF(f);
-            fail("parsing should fail");
+            pw.write("<script language='JavaScript'>");
         }
-        catch (IOException ex)
+        assertThrows("parsing should fail", IOException.class, () -> Loader.loadPDF(f));
+        try
         {
-            // expected
+            Files.delete(f.toPath());
         }
-        finally
+        catch (IOException ex)
         {
-            assertNull(doc);
+            fail("delete bad file failed after failed load");
         }
-
-        boolean deleted = f.delete();
-        assertTrue("delete bad file failed after failed load()", deleted);
     }
 
     /**
-     * Test whether a good file can be deleted after load() and close() succeed.
+     * Test whether a good file can be deleted after loadPDF() and close() succeed.
      *
-     * @throws java.io.FileNotFoundException
+     * @throws java.io.IOException
      */
+    @Test
     public void testDeleteGoodFile() throws IOException
     {
-        File f = new File("test.pdf");
-        PDDocument doc = new PDDocument();
-        doc.addPage(new PDPage());
-        doc.save(f);
-        doc.close();
+        File f = new File(TESTRESULTSDIR, "testDeleteGoodFile.pdf");
+        try (PDDocument doc = new PDDocument())
+        {
+            doc.addPage(new PDPage());
+            doc.save(f);
+        }
 
         Loader.loadPDF(f).close();
-
-        boolean deleted = f.delete();
-        assertTrue("delete good file failed after successful load() and close()", deleted);
+        
+        try
+        {
+            Files.delete(f.toPath());
+        }
+        catch (IOException ex)
+        {
+            fail("delete good file failed after successful load() and close()");
+        }
     }
 
     /**
      * PDFBOX-3481: Test whether XRef generation results in unusable PDFs if Arab numbering is
      * default.
+     *
+     * @throws java.io.IOException
      */
+    @Test
     public void testSaveArabicLocale() throws IOException
     {
         Locale defaultLocale = Locale.getDefault();
@@ -206,10 +223,11 @@ public class TestPDDocument extends Test
 
         ByteArrayOutputStream baos = new ByteArrayOutputStream();
 
-        PDDocument doc = new PDDocument();
-        doc.addPage(new PDPage());
-        doc.save(baos);
-        doc.close();
+        try (PDDocument doc = new PDDocument())
+        {
+            doc.addPage(new PDPage());
+            doc.save(baos);
+        }
 
         Loader.loadPDF(new ByteArrayInputStream(baos.toByteArray())).close();