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