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();