]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
BasePDFTestCase extracted from PDFAConformanceTestCase, will be used to create more...
authorBertrand Delacretaz <bdelacretaz@apache.org>
Fri, 15 Sep 2006 12:05:25 +0000 (12:05 +0000)
committerBertrand Delacretaz <bdelacretaz@apache.org>
Fri, 15 Sep 2006 12:05:25 +0000 (12:05 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@446585 13f79535-47bb-0310-9956-ffa450edef68

test/java/org/apache/fop/render/pdf/BasePDFTestCase.java [new file with mode: 0644]
test/java/org/apache/fop/render/pdf/PDFAConformanceTestCase.java

diff --git a/test/java/org/apache/fop/render/pdf/BasePDFTestCase.java b/test/java/org/apache/fop/render/pdf/BasePDFTestCase.java
new file mode 100644 (file)
index 0000000..cf7fe3e
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.fop.render.pdf;
+
+import java.io.File;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.fop.apps.FOUserAgent;
+import org.apache.fop.apps.Fop;
+import org.apache.fop.apps.FopFactory;
+import org.apache.fop.apps.MimeConstants;
+
+import junit.framework.TestCase;
+
+/** Base class for automated tests that create PDF files
+ *  $Id$ 
+ */
+
+public class BasePDFTestCase extends TestCase {
+  protected final FopFactory fopFactory = FopFactory.newInstance();
+  protected final TransformerFactory tFactory = TransformerFactory.newInstance();
+
+  protected BasePDFTestCase(String name) {
+    super(name);
+  }
+  
+  /**
+   * Convert a test FO file to PDF
+   * @param foFile the FO file
+   * @param ua the preconfigured user agent
+   * @param dumpPdfFile if true, dumps the generated PDF file to a file name (foFile).pdf and returns it as a File
+   * @throws Exception if the conversion fails
+   */
+  protected File convertFO(File foFile, FOUserAgent ua, boolean dumpPdfFile) throws Exception {
+      File outFile = null;
+      ByteArrayOutputStream baout = new ByteArrayOutputStream();
+      Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, ua, baout);
+      Transformer transformer = tFactory.newTransformer();
+      Source src = new StreamSource(foFile);
+      SAXResult res = new SAXResult(fop.getDefaultHandler());
+      transformer.transform(src, res);
+      if (dumpPdfFile) {
+          outFile = new File(foFile.getParentFile(), foFile.getName() + ".pdf");
+          FileUtils.writeByteArrayToFile(outFile, baout.toByteArray());
+      }
+      return outFile;
+  }
+}
index ca647a4b69cd1183d98e23bafd15f3d4e5e08f1f..c46b08179bac2192e829205cb41658f6c2785f70 100644 (file)
@@ -21,30 +21,16 @@ package org.apache.fop.render.pdf;
 
 import java.io.File;
 
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.sax.SAXResult;
-import javax.xml.transform.stream.StreamSource;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.commons.io.output.ByteArrayOutputStream;
 import org.apache.fop.apps.FOUserAgent;
-import org.apache.fop.apps.Fop;
-import org.apache.fop.apps.FopFactory;
-import org.apache.fop.apps.MimeConstants;
 import org.apache.fop.pdf.PDFConformanceException;
 
-import junit.framework.TestCase;
-
 /**
  * Tests PDF/A-1 functionality.
  */
-public class PDFAConformanceTestCase extends TestCase {
+public class PDFAConformanceTestCase extends BasePDFTestCase {
 
-    private TransformerFactory tFactory = TransformerFactory.newInstance();
-    private FopFactory fopFactory = FopFactory.newInstance();
     private File foBaseDir = new File("test/xml/pdf-a");
+    private boolean dumpPDF = Boolean.getBoolean("PDFAConformanceTestCase.dumpPDF");
     
     /**
      * Main constructor
@@ -58,27 +44,12 @@ public class PDFAConformanceTestCase extends TestCase {
             throw new RuntimeException("Configuring the FopFactory failed: " + e.getMessage());
         }
     }
-    
-    /**
-     * Convert the test file
-     * @param foFile the FO file
-     * @param ua the preconfigured user agent
-     * @throws Exception if the conversion fails
-     */
-    protected void convertFO(File foFile, FOUserAgent ua) throws Exception {
-        ua.getRendererOptions().put("pdf-a-mode", "PDF/A-1b");
-        File outFile = null;
-        ByteArrayOutputStream baout = new ByteArrayOutputStream();
-        Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, ua, baout);
-        Transformer transformer = tFactory.newTransformer();
-        Source src = new StreamSource(foFile);
-        SAXResult res = new SAXResult(fop.getDefaultHandler());
-        transformer.transform(src, res);
-        if (false) {
-            //Write to file for debugging
-            outFile = new File(foFile.getParentFile(), foFile.getName() + ".pdf");
-            FileUtils.writeByteArrayToFile(outFile, baout.toByteArray());
-        }
+
+    /** create an FOUserAgent for our tests */
+    protected FOUserAgent getUserAgent() {
+      final FOUserAgent a = fopFactory.newFOUserAgent();
+      a.getRendererOptions().put("pdf-a-mode", "PDF/A-1b");
+      return a;
     }
     
     /**
@@ -86,9 +57,8 @@ public class PDFAConformanceTestCase extends TestCase {
      * @throws Exception if the test fails
      */
     public void testAllOk() throws Exception {
-        FOUserAgent ua = fopFactory.newFOUserAgent();
         File foFile = new File(foBaseDir, "minimal-pdf-a.fo");
-        convertFO(foFile, ua);
+        convertFO(foFile, getUserAgent(), dumpPDF);
     }
     
     /**
@@ -96,11 +66,11 @@ public class PDFAConformanceTestCase extends TestCase {
      * @throws Exception if the test fails
      */
     public void testNoEncryption() throws Exception {
-        FOUserAgent ua = fopFactory.newFOUserAgent();
+        final FOUserAgent ua = getUserAgent();
         ua.getRendererOptions().put("owner-password", "mypassword"); //To enabled encryption
         File foFile = new File(foBaseDir, "minimal-pdf-a.fo");
         try {
-            convertFO(foFile, ua);
+            convertFO(foFile, ua, dumpPDF);
             fail("Expected PDFConformanceException. PDF/A-1 and PDF encryption don't go together.");
         } catch (PDFConformanceException e) {
             //Good!
@@ -112,10 +82,9 @@ public class PDFAConformanceTestCase extends TestCase {
      * @throws Exception if the test fails
      */
     public void testFontNotEmbedded() throws Exception {
-        FOUserAgent ua = fopFactory.newFOUserAgent();
         File foFile = new File(foBaseDir, "base14-font.fo");
         try {
-            convertFO(foFile, ua);
+            convertFO(foFile, getUserAgent(), dumpPDF);
             fail("Expected PDFConformanceException. PDF/A-1 wants all fonts embedded.");
         } catch (PDFConformanceException e) {
             //Good!
@@ -127,10 +96,9 @@ public class PDFAConformanceTestCase extends TestCase {
      * @throws Exception if the test fails
      */
     public void testEPSUsage() throws Exception {
-        FOUserAgent ua = fopFactory.newFOUserAgent();
         File foFile = new File(foBaseDir, "with-eps.fo");
         try {
-            convertFO(foFile, ua);
+            convertFO(foFile, getUserAgent(), dumpPDF);
             fail("Expected PDFConformanceException. PDF/A-1 does not allow PostScript XObjects.");
         } catch (PDFConformanceException e) {
             //Good!
@@ -142,13 +110,12 @@ public class PDFAConformanceTestCase extends TestCase {
      * @throws Exception if the test fails
      */
     public void testImages() throws Exception {
-        FOUserAgent ua = fopFactory.newFOUserAgent();
         File foFile = new File(foBaseDir, "with-rgb-images.fo");
-        convertFO(foFile, ua);
+        convertFO(foFile, getUserAgent(), dumpPDF);
 
         foFile = new File(foBaseDir, "with-cmyk-images.fo");
         try {
-            convertFO(foFile, ua);
+            convertFO(foFile, getUserAgent(), dumpPDF);
             fail("Expected PDFConformanceException. PDF/A-1 does not allow PostScript XObjects.");
         } catch (PDFConformanceException e) {
             //Good!