diff options
author | Yegor Kozlov <yegor@apache.org> | 2011-07-20 07:38:01 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2011-07-20 07:38:01 +0000 |
commit | cbb80e2943a1fdcf22ca8c969efd0e93b048f1e7 (patch) | |
tree | 18d7bb7a1ec21dae564560cbddb6339ca7a48d07 /src/testcases/org/apache/poi | |
parent | af6641682a317069f7121722a5d252a8becb4157 (diff) | |
download | poi-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.java | 100 |
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())); + } + } |