removed test which is covered by TestPPTX2PNG

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1880910 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Andreas Beeker 2020-08-16 23:19:11 +00:00
parent b57da2dada
commit afe4a109a8
1 changed files with 72 additions and 141 deletions

View File

@ -22,42 +22,28 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.util.BitSet;
import java.util.List;
import javax.imageio.ImageIO;
import org.apache.poi.POIDataSamples;
import org.apache.poi.ddf.EscherBSERecord;
import org.apache.poi.hssf.usermodel.DummyGraphics2d;
import org.apache.poi.sl.draw.DrawFactory;
import org.apache.poi.sl.usermodel.PictureData.PictureType;
import org.apache.poi.sl.usermodel.Slide;
import org.apache.poi.sl.usermodel.SlideShow;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
/**
* Test Picture shape.
*
* @author Yegor Kozlov
*/
public final class TestPicture {
private static POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
private static final POIDataSamples _slTests = POIDataSamples.getSlideShowInstance();
@BeforeClass
public static void disableImageIOCache() {
@ -71,35 +57,33 @@ public final class TestPicture {
*/
@Test
public void multiplePictures() throws IOException {
HSLFSlideShow ppt = new HSLFSlideShow();
try (HSLFSlideShow ppt = new HSLFSlideShow()) {
HSLFSlide s = ppt.createSlide();
HSLFSlide s2 = ppt.createSlide();
HSLFSlide s3 = ppt.createSlide();
HSLFSlide s = ppt.createSlide();
HSLFSlide s2 = ppt.createSlide();
HSLFSlide s3 = ppt.createSlide();
HSLFPictureData data = ppt.addPicture(_slTests.readFile("clock.jpg"), PictureType.JPEG);
HSLFPictureShape pict = new HSLFPictureShape(data);
HSLFPictureShape pict2 = new HSLFPictureShape(data);
HSLFPictureShape pict3 = new HSLFPictureShape(data);
HSLFPictureData data = ppt.addPicture(_slTests.readFile("clock.jpg"), PictureType.JPEG);
HSLFPictureShape pict = new HSLFPictureShape(data);
HSLFPictureShape pict2 = new HSLFPictureShape(data);
HSLFPictureShape pict3 = new HSLFPictureShape(data);
pict.setAnchor(new Rectangle(10, 10, 100, 100));
s.addShape(pict);
EscherBSERecord bse1 = pict.getEscherBSERecord();
assertEquals(1, bse1.getRef());
pict.setAnchor(new Rectangle(10,10,100,100));
s.addShape(pict);
EscherBSERecord bse1 = pict.getEscherBSERecord();
assertEquals(1, bse1.getRef());
pict2.setAnchor(new Rectangle(10, 10, 100, 100));
s2.addShape(pict2);
EscherBSERecord bse2 = pict.getEscherBSERecord();
assertSame(bse1, bse2);
assertEquals(2, bse1.getRef());
pict2.setAnchor(new Rectangle(10,10,100,100));
s2.addShape(pict2);
EscherBSERecord bse2 = pict.getEscherBSERecord();
assertSame(bse1, bse2);
assertEquals(2, bse1.getRef());
pict3.setAnchor(new Rectangle(10,10,100,100));
s3.addShape(pict3);
EscherBSERecord bse3 = pict.getEscherBSERecord();
assertSame(bse2, bse3);
assertEquals(3, bse1.getRef());
ppt.close();
pict3.setAnchor(new Rectangle(10, 10, 100, 100));
s3.addShape(pict3);
EscherBSERecord bse3 = pict.getEscherBSERecord();
assertSame(bse2, bse3);
assertEquals(3, bse1.getRef());
}
}
/**
@ -108,117 +92,64 @@ public final class TestPicture {
*/
@Test
public void bug46122() throws IOException {
HSLFSlideShow ppt = new HSLFSlideShow();
HSLFSlide slide = ppt.createSlide();
HSLFPictureData pd = HSLFPictureData.create(PictureType.PNG);
HSLFPictureShape pict = new HSLFPictureShape(pd); //index to non-existing picture data
pict.setAnchor(new Rectangle2D.Double(50,50,100,100));
pict.setSheet(slide);
HSLFPictureData data = pict.getPictureData();
assertNull(data);
try (HSLFSlideShow ppt = new HSLFSlideShow()) {
HSLFSlide slide = ppt.createSlide();
HSLFPictureData pd = HSLFPictureData.create(PictureType.PNG);
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
pict.draw(graphics, null);
ppt.close();
HSLFPictureShape pict = new HSLFPictureShape(pd); //index to non-existing picture data
pict.setAnchor(new Rectangle2D.Double(50, 50, 100, 100));
pict.setSheet(slide);
HSLFPictureData data = pict.getPictureData();
assertNull(data);
BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
pict.draw(graphics, null);
}
}
@Test
public void macImages() throws IOException {
HSLFSlideShowImpl hss = new HSLFSlideShowImpl(_slTests.openResourceAsStream("53446.ppt"));
try (InputStream is = _slTests.openResourceAsStream("53446.ppt");
HSLFSlideShowImpl hss = new HSLFSlideShowImpl(is)) {
List<HSLFPictureData> pictures = hss.getPictureData();
assertEquals(15, pictures.size());
List<HSLFPictureData> pictures = hss.getPictureData();
assertEquals(15, pictures.size());
int[][] expectedSizes = {
null, // WMF
{ 427, 428 }, // PNG
{ 371, 370 }, // PNG
{ 288, 183 }, // PNG
{ 285, 97 }, // PNG
{ 288, 168 }, // PNG
null, // WMF
null, // WMF
{ 199, 259 }, // PNG
{ 432, 244 }, // PNG
{ 261, 258 }, // PNG
null, // WMF
null, // WMF
null, // WMF
null // EMF
};
int[][] expectedSizes = {
null, // WMF
{427, 428}, // PNG
{371, 370}, // PNG
{288, 183}, // PNG
{285, 97}, // PNG
{288, 168}, // PNG
null, // WMF
null, // WMF
{199, 259}, // PNG
{432, 244}, // PNG
{261, 258}, // PNG
null, // WMF
null, // WMF
null, // WMF
null // EMF
};
int i = 0;
for (HSLFPictureData pd : pictures) {
int[] dimensions = expectedSizes[i++];
BufferedImage image = ImageIO.read(new ByteArrayInputStream(pd.getData()));
switch (pd.getType()) {
case WMF:
case EMF:
break;
default:
assertNotNull(image);
assertEquals(dimensions[0], image.getWidth());
assertEquals(dimensions[1], image.getHeight());
break;
}
}
hss.close();
}
@Test
@Ignore("Just for visual validation - antialiasing is different on various systems")
public void bug54541()
throws IOException, ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException {
String[] files = {
// "sample_pptx_grouping_issues.pptx",
// "54542_cropped_bitmap.pptx",
// "54541_cropped_bitmap.ppt",
// "54541_cropped_bitmap2.ppt",
"alterman_security.ppt",
// "alterman_security3.pptx",
};
BitSet pages = new BitSet();
pages.set(2);
for (String file : files) {
InputStream is = _slTests.openResourceAsStream(file);
SlideShow<?,?> ss;
if (file.endsWith("pptx")) {
Class<?> cls = Class.forName("org.apache.poi.xslf.usermodel.XMLSlideShow");
Constructor<?> ct = cls.getDeclaredConstructor(InputStream.class);
ss = (SlideShow<?,?>)ct.newInstance(is);
} else {
ss = new HSLFSlideShow(is);
}
is.close();
boolean debugOut = false;
Dimension pg = ss.getPageSize();
for (Slide<?,?> slide : ss.getSlides()) {
int slideNo = slide.getSlideNumber();
if (!pages.get(slideNo-1)) {
if (pages.nextSetBit(slideNo-1) == -1) break; else continue;
}
if (debugOut) {
DummyGraphics2d graphics = new DummyGraphics2d();
slide.draw(graphics);
} else {
BufferedImage img = new BufferedImage(pg.width, pg.height, BufferedImage.TYPE_INT_ARGB);
Graphics2D graphics = img.createGraphics();
slide.draw(graphics);
graphics.setColor(Color.BLACK);
graphics.setStroke(new BasicStroke(1));
graphics.drawRect(0, 0, (int)pg.getWidth()-1, (int)pg.getHeight()-1);
ImageIO.write(img, "PNG", new File(file.replaceFirst(".pptx?", "-")+slideNo+".png"));
int i = 0;
for (HSLFPictureData pd : pictures) {
int[] dimensions = expectedSizes[i++];
BufferedImage image = ImageIO.read(new ByteArrayInputStream(pd.getData()));
switch (pd.getType()) {
case WMF:
case EMF:
break;
default:
assertNotNull(image);
assertNotNull(dimensions);
assertEquals(dimensions[0], image.getWidth());
assertEquals(dimensions[1], image.getHeight());
break;
}
}
ss.close();
}
}
}