import junit.framework.TestCase;\r
import org.apache.poi.xslf.XSLFTestDataSamples;\r
\r
+import java.io.IOException;\r
import java.util.Arrays;\r
+import java.util.HashMap;\r
import java.util.List;\r
+import java.util.Map;\r
\r
/**\r
* @author Yegor Kozlov\r
assertTrue(Arrays.equals(data2, shape2.getPictureData().getData()));\r
\r
ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt);\r
- List<XSLFPictureData> pics = ppt.getAllPictures();\r
+ List<XSLFPictureData> pics = ppt.getAllPictures();\r
assertEquals(2, pics.size());\r
assertTrue(Arrays.equals(data1, pics.get(0).getData()));\r
assertTrue(Arrays.equals(data2, pics.get(1).getData()));\r
\r
XSLFShape[] shapes = ppt.getSlides()[0].getShapes();\r
- assertTrue(Arrays.equals(data1, ((XSLFPictureShape)shapes[0]).getPictureData().getData()));\r
- assertTrue(Arrays.equals(data2, ((XSLFPictureShape)shapes[1]).getPictureData().getData()));\r
+ assertTrue(Arrays.equals(data1, ((XSLFPictureShape) shapes[0]).getPictureData().getData()));\r
+ assertTrue(Arrays.equals(data2, ((XSLFPictureShape) shapes[1]).getPictureData().getData()));\r
+ }\r
+\r
+ public void testCreateMultiplePictures() {\r
+ XMLSlideShow ppt = new XMLSlideShow();\r
+ XSLFSlide slide1 = ppt.createSlide();\r
+ XSLFGroupShape group1 = slide1.createGroup();\r
+\r
+\r
+ int pictureIndex = 0;\r
+ // first add 20 images to the slide\r
+ for (int i = 0; i < 20; i++, pictureIndex++) {\r
+ byte[] data = new byte[]{(byte)pictureIndex};\r
+ int elementIndex = ppt.addPicture(data,\r
+ XSLFPictureData.PICTURE_TYPE_PNG);\r
+ assertEquals(pictureIndex, elementIndex); // added images have indexes 0,1,2....19\r
+ XSLFPictureShape picture = slide1.createPicture(elementIndex);\r
+ // POI saves images as image1.png, image2.png, etc.\r
+ String fileName = "image" + (elementIndex + 1) + ".png";\r
+ assertEquals(fileName, picture.getPictureData().getFileName());\r
+ assertTrue(Arrays.equals(data, picture.getPictureData().getData()));\r
+ }\r
+\r
+ // and then add next 20 images to a group\r
+ for (int i = 0; i < 20; i++, pictureIndex++) {\r
+ byte[] data = new byte[]{(byte)pictureIndex};\r
+ int elementIndex = ppt.addPicture(data,\r
+ XSLFPictureData.PICTURE_TYPE_PNG);\r
+ XSLFPictureShape picture = group1.createPicture(elementIndex);\r
+ // POI saves images as image1.png, image2.png, etc.\r
+ assertEquals(pictureIndex, elementIndex); // added images have indexes 0,1,2....19\r
+ String fileName = "image" + (pictureIndex + 1) + ".png";\r
+ assertEquals(fileName, picture.getPictureData().getFileName());\r
+ assertTrue(Arrays.equals(data, picture.getPictureData().getData()));\r
+ }\r
+\r
+ // serialize, read back and check that all images are there\r
+\r
+ ppt = XSLFTestDataSamples.writeOutAndReadBack(ppt);\r
+ // pictures keyed by file name\r
+ Map<String, XSLFPictureData> pics = new HashMap<String, XSLFPictureData>();\r
+ for(XSLFPictureData p : ppt.getAllPictures()){\r
+ pics.put(p.getFileName(), p);\r
+ }\r
+ assertEquals(40, pics.size());\r
+ for (int i = 0; i < 40; i++) {\r
+ byte[] data1 = new byte[]{(byte)i};\r
+ String fileName = "image" + (i + 1) + ".png";\r
+ XSLFPictureData data = pics.get(fileName);\r
+ assertNotNull(data);\r
+ assertEquals(fileName, data.getFileName());\r
+ assertTrue(Arrays.equals(data1, data.getData()));\r
+ }\r
}\r
}
\ No newline at end of file