aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2011-07-20 07:38:01 +0000
committerYegor Kozlov <yegor@apache.org>2011-07-20 07:38:01 +0000
commitcbb80e2943a1fdcf22ca8c969efd0e93b048f1e7 (patch)
tree18d7bb7a1ec21dae564560cbddb6339ca7a48d07 /src/testcases/org/apache/poi
parentaf6641682a317069f7121722a5d252a8becb4157 (diff)
downloadpoi-cbb80e2943a1fdcf22ca8c969efd0e93b048f1e7.tar.gz
poi-cbb80e2943a1fdcf22ca8c969efd0e93b048f1e7.zip
Support for appending images to existing drawings in HSSF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1148637 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org/apache/poi')
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java100
1 files changed, 100 insertions, 0 deletions
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
index 9e51917a5f..6c08a167a1 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFPicture.java
@@ -20,6 +20,11 @@ package org.apache.poi.hssf.usermodel;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.HSSFITestDataProvider;
import org.apache.poi.ss.usermodel.BaseTestPicture;
+import org.apache.poi.ss.usermodel.PictureData;
+import org.apache.poi.ss.usermodel.Workbook;
+
+import java.util.Arrays;
+import java.util.List;
/**
* Test <code>HSSFPicture</code>.
@@ -49,4 +54,99 @@ public final class TestHSSFPicture extends BaseTestPicture {
HSSFPicture pic = p1.createPicture(new HSSFClientAnchor(), idx1);
pic.resize();
}
+
+
+ public void testAddPictures(){
+ HSSFWorkbook wb = new HSSFWorkbook();
+
+ HSSFSheet sh = wb.createSheet("Pictures");
+ HSSFPatriarch dr = sh.createDrawingPatriarch();
+ assertEquals(0, dr.getChildren().size());
+ HSSFClientAnchor anchor = wb.getCreationHelper().createClientAnchor();
+
+ //register a picture
+ byte[] data1 = new byte[]{1, 2, 3};
+ int idx1 = wb.addPicture(data1, Workbook.PICTURE_TYPE_JPEG);
+ assertEquals(1, idx1);
+ HSSFPicture p1 = dr.createPicture(anchor, idx1);
+ assertTrue(Arrays.equals(data1, p1.getPictureData().getData()));
+
+ // register another one
+ byte[] data2 = new byte[]{4, 5, 6};
+ int idx2 = wb.addPicture(data2, Workbook.PICTURE_TYPE_JPEG);
+ assertEquals(2, idx2);
+ HSSFPicture p2 = dr.createPicture(anchor, idx2);
+ assertEquals(2, dr.getChildren().size());
+ assertTrue(Arrays.equals(data2, p2.getPictureData().getData()));
+
+ // confirm that HSSFPatriarch.getChildren() returns two picture shapes
+ assertTrue(Arrays.equals(data1, ((HSSFPicture)dr.getChildren().get(0)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data2, ((HSSFPicture)dr.getChildren().get(1)).getPictureData().getData()));
+
+ // write, read back and verify that our pictures are there
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+ List<? extends PictureData> lst2 = wb.getAllPictures();
+ assertEquals(2, lst2.size());
+ assertTrue(Arrays.equals(data1, lst2.get(0).getData()));
+ assertTrue(Arrays.equals(data2, lst2.get(1).getData()));
+
+ // confirm that the pictures are in the Sheet's drawing
+ sh = wb.getSheet("Pictures");
+ dr = sh.createDrawingPatriarch();
+ assertEquals(2, dr.getChildren().size());
+ assertTrue(Arrays.equals(data1, ((HSSFPicture)dr.getChildren().get(0)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data2, ((HSSFPicture)dr.getChildren().get(1)).getPictureData().getData()));
+
+ // add a third picture
+ byte[] data3 = new byte[]{7, 8, 9};
+ // picture index must increment across write-read
+ int idx3 = wb.addPicture(data3, Workbook.PICTURE_TYPE_JPEG);
+ assertEquals(3, idx3);
+ HSSFPicture p3 = dr.createPicture(anchor, idx3);
+ assertTrue(Arrays.equals(data3, p3.getPictureData().getData()));
+ assertEquals(3, dr.getChildren().size());
+ assertTrue(Arrays.equals(data1, ((HSSFPicture)dr.getChildren().get(0)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data2, ((HSSFPicture)dr.getChildren().get(1)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data3, ((HSSFPicture)dr.getChildren().get(2)).getPictureData().getData()));
+
+ // write and read again
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+ List<? extends PictureData> lst3 = wb.getAllPictures();
+ // all three should be there
+ assertEquals(3, lst3.size());
+ assertTrue(Arrays.equals(data1, lst3.get(0).getData()));
+ assertTrue(Arrays.equals(data2, lst3.get(1).getData()));
+ assertTrue(Arrays.equals(data3, lst3.get(2).getData()));
+
+ sh = wb.getSheet("Pictures");
+ dr = sh.createDrawingPatriarch();
+ assertEquals(3, dr.getChildren().size());
+
+ // forth picture
+ byte[] data4 = new byte[]{10, 11, 12};
+ int idx4 = wb.addPicture(data4, Workbook.PICTURE_TYPE_JPEG);
+ assertEquals(4, idx4);
+ dr.createPicture(anchor, idx4);
+ assertEquals(4, dr.getChildren().size());
+ assertTrue(Arrays.equals(data1, ((HSSFPicture)dr.getChildren().get(0)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data2, ((HSSFPicture)dr.getChildren().get(1)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data3, ((HSSFPicture)dr.getChildren().get(2)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data4, ((HSSFPicture)dr.getChildren().get(3)).getPictureData().getData()));
+
+ wb = HSSFTestDataSamples.writeOutAndReadBack(wb);
+ List<? extends PictureData> lst4 = wb.getAllPictures();
+ assertEquals(4, lst4.size());
+ assertTrue(Arrays.equals(data1, lst4.get(0).getData()));
+ assertTrue(Arrays.equals(data2, lst4.get(1).getData()));
+ assertTrue(Arrays.equals(data3, lst4.get(2).getData()));
+ assertTrue(Arrays.equals(data4, lst4.get(3).getData()));
+ sh = wb.getSheet("Pictures");
+ dr = sh.createDrawingPatriarch();
+ assertEquals(4, dr.getChildren().size());
+ assertTrue(Arrays.equals(data1, ((HSSFPicture)dr.getChildren().get(0)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data2, ((HSSFPicture)dr.getChildren().get(1)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data3, ((HSSFPicture)dr.getChildren().get(2)).getPictureData().getData()));
+ assertTrue(Arrays.equals(data4, ((HSSFPicture)dr.getChildren().get(3)).getPictureData().getData()));
+ }
+
}