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 2015/12/06 22:58:05 UTC

svn commit: r1718230 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java

Author: tilman
Date: Sun Dec  6 21:58:05 2015
New Revision: 1718230

URL: http://svn.apache.org/viewvc?rev=1718230&view=rev
Log:
PDFBOX-3153: add test

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

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=1718230&r1=1718229&r2=1718230&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 Dec  6 21:58:05 2015
@@ -17,11 +17,15 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import java.awt.Graphics;
 import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 import javax.imageio.ImageIO;
 import junit.framework.TestCase;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
@@ -29,6 +33,7 @@ import org.apache.pdfbox.pdmodel.graphic
 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 static org.junit.Assert.assertArrayEquals;
 
 /**
  * Unit tests for JPEGFactory
@@ -58,6 +63,7 @@ public class JPEGFactoryTest extends Tes
         validate(ximage, 8, 344, 287, "jpg", PDDeviceRGB.INSTANCE.getName());
 
         doWritePDF(document, ximage, testResultsDir, "jpegrgbstream.pdf");
+        checkJpegStream(testResultsDir, "jpegrgbstream.pdf", JPEGFactoryTest.class.getResourceAsStream("jpeg.jpg"));
     }
 
     /**
@@ -72,6 +78,7 @@ public class JPEGFactoryTest extends Tes
         validate(ximage, 8, 344, 287, "jpg", PDDeviceGray.INSTANCE.getName());
 
         doWritePDF(document, ximage, testResultsDir, "jpeg256stream.pdf");
+        checkJpegStream(testResultsDir, "jpeg256stream.pdf", JPEGFactoryTest.class.getResourceAsStream("jpeg256.jpg"));
     }
 
     /**
@@ -191,4 +198,23 @@ public class JPEGFactoryTest extends Tes
 
         doWritePDF(document, ximage, testResultsDir, "jpeg-4bargb.pdf");
     }
+
+    // check whether it is possible to extract the jpeg stream exactly 
+    // as it was passed to createFromStream
+    private void checkJpegStream(File testResultsDir, String filename, InputStream resourceStream)
+            throws IOException
+    {
+        PDDocument doc = PDDocument.load(new File(testResultsDir, filename));
+        PDImageXObject img =
+                (PDImageXObject) doc.getPage(0).getResources().getXObject(COSName.getPDFName("Im1"));
+        InputStream dctStream = img.createInputStream(Arrays.asList(COSName.DCT_DECODE.getName()));
+        ByteArrayOutputStream baos1 = new ByteArrayOutputStream();
+        ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
+        IOUtils.copy(resourceStream, baos1);
+        IOUtils.copy(dctStream, baos2);
+        resourceStream.close();
+        dctStream.close();
+        assertArrayEquals(baos1.toByteArray(), baos2.toByteArray());
+        doc.close();
+    }
 }