You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ki...@apache.org on 2020/05/26 23:43:40 UTC
[commons-imaging] branch master updated: Added parameter and
correctness tests
This is an automated email from the ASF dual-hosted git repository.
kinow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-imaging.git
The following commit(s) were added to refs/heads/master by this push:
new a94189c Added parameter and correctness tests
new f27f471 Merge pull request #77 from gwlucastrig/extendTiffSubImageTest
a94189c is described below
commit a94189cd8984c3971d405422460a6216566cbdae
Author: gwlucastrig <co...@gmail.com>
AuthorDate: Tue May 26 19:13:44 2020 -0400
Added parameter and correctness tests
---
.../imaging/formats/tiff/TiffSubImageTest.java | 83 ++++++++++++++++++++++
1 file changed, 83 insertions(+)
diff --git a/src/test/java/org/apache/commons/imaging/formats/tiff/TiffSubImageTest.java b/src/test/java/org/apache/commons/imaging/formats/tiff/TiffSubImageTest.java
index 2f2e235..2d4a06a 100644
--- a/src/test/java/org/apache/commons/imaging/formats/tiff/TiffSubImageTest.java
+++ b/src/test/java/org/apache/commons/imaging/formats/tiff/TiffSubImageTest.java
@@ -17,9 +17,13 @@
package org.apache.commons.imaging.formats.tiff;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
import java.awt.image.BufferedImage;
+import java.io.File;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@@ -31,6 +35,11 @@ import org.apache.commons.imaging.formats.tiff.constants.TiffConstants;
import org.junit.jupiter.api.Test;
public class TiffSubImageTest extends TiffBaseTest {
+ final List<File> imageFileList;
+
+ TiffSubImageTest() throws IOException, ImageReadException{
+ imageFileList = getTiffImages();
+ }
@Test
public void testSubImage() throws ImageReadException, ImageWriteException, IOException {
@@ -46,4 +55,78 @@ public class TiffSubImageTest extends TiffBaseTest {
assertEquals(image.getWidth(), 2);
assertEquals(image.getHeight(), 3);
}
+
+ @Test
+ public void testBadSubImage() throws ImageReadException, IOException{
+ File target = imageFileList.get(0);
+ final BufferedImage referenceImage = Imaging.getBufferedImage(target);
+ int width = referenceImage.getWidth();
+ int height = referenceImage.getHeight();
+
+ final Map<String, Object> params = new HashMap<>();
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_X, 0);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_Y, 0);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_WIDTH, width);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_HEIGHT, height);
+
+ BufferedImage image = Imaging.getBufferedImage(target, params);
+ assertEquals(image.getWidth(), width, "Improper width when sub-imaging entire image");
+ assertEquals(image.getHeight(), height, "Improper height when sub-imaging entire image");
+
+ processBadParams(target, -1, 0, width, height, "negative x position");
+ processBadParams(target, 0, -1, width, height, "negative y position");
+ processBadParams(target, 0, 0, 0, height, "zero width");
+ processBadParams(target, 0, 0, width, 0, "zero height");
+ processBadParams(target, 1, 0, width, height, "sub-image width extends beyond bounds");
+ processBadParams(target, 0, 1, width, height, "sub-image height extends beyond bounds");
+ }
+
+ private void processBadParams(File target, int x, int y, int width, int height, String comment) throws IOException{
+ try{
+ final Map<String, Object> params = new HashMap<>();
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_X, x);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_Y, y);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_WIDTH, width);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_HEIGHT, height);
+ BufferedImage image = Imaging.getBufferedImage(target, params);
+ fail("Reading TIFF sub-image failed to detect bad parameter: "+comment);
+ }catch(ImageReadException ire){
+ // the test passed
+ }
+ }
+
+ @Test
+ public void testSubImageCorrectness() throws ImageReadException, IOException {
+ for(File target: imageFileList){
+ final BufferedImage referenceImage = Imaging.getBufferedImage(target);
+ int rW = referenceImage.getWidth();
+ int rH = referenceImage.getHeight();
+ if(rW<3 || rH<3){
+ continue;
+ }
+ int []rArgb = new int[rW*rH];
+ referenceImage.getRGB(0, 0, rW, rH, rArgb, 0, rW);
+ final Map<String, Object> params = new HashMap<>();
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_X, 1);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_Y, 1);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_WIDTH, rW-2);
+ params.put(TiffConstants.PARAM_KEY_SUBIMAGE_HEIGHT, rH-2);
+ BufferedImage image = Imaging.getBufferedImage(target, params);
+ int iW = image.getWidth();
+ int iH = image.getHeight();
+ assertEquals(iW, rW-2, "Invalid subimage width");
+ assertEquals(iH, rH-2, "Invalid subimage height");
+ int []iArgb= new int[iW*iH];
+ image.getRGB(0, 0, iW, iH, iArgb, 0, iW);
+ for(int i=0; i<iH; i++){
+ for(int j=0; j<iW; j++){
+ int rTest = rArgb[(i+1)*rW+j+1];
+ int iTest = iArgb[i*iW+j];
+ assertEquals(iTest, rTest, "Invalid pixel lookup for "+target.getName()+" at "+i+", "+j);
+ }
+ }
+ }
+ }
+
+
}
\ No newline at end of file