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 2014/05/11 20:13:53 UTC

svn commit: r1593833 - in /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image: CCITTFactoryTest.java JPEGFactoryTest.java LosslessFactoryTest.java ValidateXImage.java

Author: tilman
Date: Sun May 11 18:13:52 2014
New Revision: 1593833

URL: http://svn.apache.org/r1593833
Log:
PDFBOX-2067: refactored tests

Modified:
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
    pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java?rev=1593833&r1=1593832&r2=1593833&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java Sun May 11 18:13:52 2014
@@ -23,6 +23,7 @@ import org.apache.pdfbox.io.RandomAccess
 import org.apache.pdfbox.io.RandomAccessFile;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
+import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.doWritePDF;
 import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.validate;
 
 /**
@@ -32,6 +33,15 @@ import static org.apache.pdfbox.pdmodel.
  */
 public class CCITTFactoryTest extends TestCase
 {
+    private final File testResultsDir = new File("target/test-output/graphics");
+
+    @Override
+    protected void setUp() throws Exception
+    {
+        super.setUp();
+        testResultsDir.mkdirs();
+    }
+
     /**
      * Tests CCITTFactory#createFromRandomAccess(PDDocument document,
      * RandomAccess reader)
@@ -43,6 +53,7 @@ public class CCITTFactoryTest extends Te
         RandomAccess reader = new RandomAccessFile(new File(tiffPath), "r");
         PDImageXObject ximage = CCITTFactory.createFromRandomAccess(document, reader);
         validate(ximage, 1, 344, 287, "tiff", PDDeviceGray.INSTANCE.getName());
-        document.close();
+        
+        doWritePDF(document, ximage, testResultsDir, "tiff.pdf");        
     }
 }

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java?rev=1593833&r1=1593832&r2=1593833&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java Sun May 11 18:13:52 2014
@@ -24,11 +24,10 @@ import javax.imageio.ImageIO;
 import junit.framework.TestCase;
 import static junit.framework.TestCase.assertTrue;
 import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPage;
-import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.colorCount;
+import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.doWritePDF;
 import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.validate;
 
 /**
@@ -131,21 +130,8 @@ public class JPEGFactoryTest extends Tes
         assertNotNull(ximage.getSoftMask());
         validate(ximage.getSoftMask(), 8, width, height, "jpg", PDDeviceGray.INSTANCE.getName());
         assertTrue(colorCount(ximage.getSoftMask().getImage()) > image.getHeight() / 10);
-
-        // This part isn't really needed because this test doesn't break
-        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-        // if something goes wrong in the future and we want to have a PDF to open.
-        PDPage page = new PDPage();
-        document.addPage(page);
-        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-        contentStream.drawXObject(ximage, 150, 300, ximage.getWidth(), ximage.getHeight());
-        contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-        contentStream.close();
-        File pdfFile = new File(testResultsDir, "jpeg-intargb.pdf");
-        document.save(pdfFile);
-        document.close();
-        document = PDDocument.loadNonSeq(pdfFile, null);
-        document.close();
+        
+        doWritePDF(document, ximage, testResultsDir, "jpeg-intargb.pdf");
     }
 
     /**
@@ -179,19 +165,6 @@ public class JPEGFactoryTest extends Tes
         validate(ximage.getSoftMask(), 8, width, height, "jpg", PDDeviceGray.INSTANCE.getName());
         assertTrue(colorCount(ximage.getSoftMask().getImage()) > image.getHeight() / 10);
 
-        // This part isn't really needed because this test doesn't break
-        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-        // if something goes wrong in the future and we want to have a PDF to open.
-        PDPage page = new PDPage();
-        document.addPage(page);
-        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-        contentStream.drawXObject(ximage, 150, 300, ximage.getWidth(), ximage.getHeight());
-        contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-        contentStream.close();
-        File pdfFile = new File(testResultsDir, "jpeg-4bargb.pdf");
-        document.save(pdfFile);
-        document.close();
-        document = PDDocument.loadNonSeq(pdfFile, null);
-        document.close();
+        doWritePDF(document, ximage, testResultsDir, "jpeg-4bargb.pdf");
     }
 }

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java?rev=1593833&r1=1593832&r2=1593833&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java Sun May 11 18:13:52 2014
@@ -32,6 +32,7 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.colorCount;
+import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.doWritePDF;
 import static org.apache.pdfbox.pdmodel.graphics.image.ValidateXImage.validate;
 import org.apache.pdfbox.rendering.PDFRenderer;
 
@@ -94,9 +95,11 @@ public class LosslessFactoryTest extends
         contentStream.drawXObject(ximage2, 200, 450, ximage2.getWidth() / 2, ximage2.getHeight() / 2);
         contentStream.drawXObject(ximage3, 200, 600, ximage3.getWidth() / 2, ximage3.getHeight() / 2);
         contentStream.close();
+        
         File pdfFile = new File(testResultsDir, "misc.pdf");
         document.save(pdfFile);
         document.close();
+        
         document = PDDocument.loadNonSeq(pdfFile, null);
         new PDFRenderer(document).renderImage(0);
         document.close();
@@ -138,21 +141,7 @@ public class LosslessFactoryTest extends
         validate(ximage.getSoftMask(), 8, 344, 287, "png", PDDeviceGray.INSTANCE.getName());
         assertTrue(colorCount(ximage.getSoftMask().getImage()) > image.getHeight() / 10);
 
-        // This part isn't really needed because this test doesn't break
-        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-        // if something goes wrong in the future and we want to have a PDF to open.
-        PDPage page = new PDPage();
-        document.addPage(page);
-        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-        contentStream.drawXObject(ximage, 150, 300, ximage.getWidth(), ximage.getHeight());
-        contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-        contentStream.close();
-        File pdfFile = new File(testResultsDir, "intargb.pdf");
-        document.save(pdfFile);
-        document.close();
-        document = PDDocument.loadNonSeq(pdfFile, null);
-        new PDFRenderer(document).renderImage(0);
-        document.close();
+        doWritePDF(document, ximage, testResultsDir, "intargb.pdf");
     }
 
     /**
@@ -205,6 +194,7 @@ public class LosslessFactoryTest extends
         }
 
         PDImageXObject ximage = LosslessFactory.createFromImage(document, argbImage);
+
         validate(ximage, 8, w, h, "png", PDDeviceRGB.INSTANCE.getName());
         checkIdent(argbImage, ximage.getImage());
         checkIdentRGB(argbImage, SampledImageReader.getRGBImage(ximage, null));
@@ -213,21 +203,7 @@ public class LosslessFactoryTest extends
         validate(ximage.getSoftMask(), 8, w, h, "png", PDDeviceGray.INSTANCE.getName());
         assertTrue(colorCount(ximage.getSoftMask().getImage()) > image.getHeight() / 10);
 
-        // This part isn't really needed because this test doesn't break
-        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-        // if something goes wrong in the future and we want to have a PDF to open.
-        PDPage page = new PDPage();
-        document.addPage(page);
-        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-        contentStream.drawXObject(ximage, 150, 300, ximage.getWidth(), ximage.getHeight());
-        contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-        contentStream.close();
-        File pdfFile = new File(testResultsDir, "4babgr.pdf");
-        document.save(pdfFile);
-        document.close();
-        document = PDDocument.loadNonSeq(pdfFile, null);
-        new PDFRenderer(document).renderImage(0);
-        document.close();
+        doWritePDF(document, ximage, testResultsDir, "4babgr.pdf");
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java?rev=1593833&r1=1593832&r2=1593833&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java (original)
+++ pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/ValidateXImage.java Sun May 11 18:13:52 2014
@@ -13,10 +13,10 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package org.apache.pdfbox.pdmodel.graphics.image;
 
 import java.awt.image.BufferedImage;
+import java.io.File;
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
@@ -25,11 +25,15 @@ import static junit.framework.TestCase.a
 import static junit.framework.TestCase.assertTrue;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
+import org.apache.pdfbox.rendering.PDFRenderer;
 import org.apache.pdfbox.util.ImageIOUtil;
 
 /**
  * Helper class to do some validations for PDImageXObject.
- * 
+ *
  * @author Tilman Hausherr
  */
 public class ValidateXImage
@@ -54,14 +58,14 @@ public class ValidateXImage
         assertEquals(ximage.getWidth(), ximage.getImage().getWidth());
         assertEquals(ximage.getHeight(), ximage.getImage().getHeight());
 
-        boolean writeOk = ImageIOUtil.writeImage(ximage.getImage(), 
+        boolean writeOk = ImageIOUtil.writeImage(ximage.getImage(),
                 format, new NullOutputStream());
         assertTrue(writeOk);
-        writeOk = ImageIOUtil.writeImage(SampledImageReader.getRGBImage(ximage, null), 
+        writeOk = ImageIOUtil.writeImage(SampledImageReader.getRGBImage(ximage, null),
                 format, new NullOutputStream());
         assertTrue(writeOk);
     }
-    
+
     static int colorCount(BufferedImage bim)
     {
         Set<Integer> colors = new HashSet<Integer>();
@@ -77,4 +81,31 @@ public class ValidateXImage
         return colors.size();
     }
 
+    // write image twice (overlapped) in document, close document and re-read PDF
+    static void doWritePDF(PDDocument document, PDImageXObject ximage, File testResultsDir, String filename)
+            throws IOException
+    {
+        File pdfFile = new File(testResultsDir, filename);
+
+        // This part isn't really needed because this test doesn't break
+        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
+        // if something goes wrong in the future and we want to have a PDF to open.
+        int width = ximage.getWidth();
+        int height = ximage.getHeight();
+
+        PDPage page = new PDPage();
+        document.addPage(page);
+        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
+        contentStream.drawXObject(ximage, 150, 300, width, height);
+        contentStream.drawXObject(ximage, 200, 350, width, height);
+        contentStream.close();
+
+        document.save(pdfFile);
+        document.close();
+
+        document = PDDocument.loadNonSeq(pdfFile, null);
+        new PDFRenderer(document).renderImage(0);
+        document.close();
+    }
+
 }