add disabled test case

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902943 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2022-07-22 11:50:32 +00:00
parent c3f415d8e7
commit 0b0df2fe58
2 changed files with 86 additions and 61 deletions

View File

@ -16,12 +16,15 @@
==================================================================== */
package org.apache.poi.xslf;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
import org.apache.poi.POIDataSamples;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
public class XSLFTestDataSamples {
@ -34,6 +37,11 @@ public class XSLFTestDataSamples {
}
}
public static XMLSlideShow openSampleDocumentReadOnly(String sampleName) throws InvalidFormatException {
File file = POIDataSamples.getSlideShowInstance().getFile(sampleName);
return new XMLSlideShow(OPCPackage.open(file, PackageAccess.READ));
}
public static XMLSlideShow writeOutAndReadBack(XMLSlideShow doc) throws IOException {
try (UnsynchronizedByteArrayOutputStream baos = new UnsynchronizedByteArrayOutputStream(4096)) {
doc.write(baos);

View File

@ -16,15 +16,18 @@
==================================================================== */
package org.apache.poi.xslf.usermodel;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.opc.ContentTypes;
import org.apache.poi.sl.usermodel.ColorStyle;
import org.apache.poi.sl.usermodel.PaintStyle;
import org.apache.poi.sl.usermodel.TextParagraph.TextAlign;
import org.apache.poi.util.LocaleUtil;
import org.apache.poi.xslf.XSLFTestDataSamples;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.awt.Color;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
@ -52,80 +55,94 @@ public class TestXSLFDiagram {
}
@Test
public void testHasDiagram() {
XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM);
List<XSLFDiagram> diagrams = extractDiagrams(inputPptx);
assertEquals(1, diagrams.size());
public void testHasDiagram() throws IOException {
try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM)) {
List<XSLFDiagram> diagrams = extractDiagrams(inputPptx);
assertEquals(1, diagrams.size());
XSLFDiagram diagram = diagrams.get(0);
assertTrue(diagram.hasDiagram());
XSLFDiagram diagram = diagrams.get(0);
assertTrue(diagram.hasDiagram());
}
}
@Disabled("https://bz.apache.org/bugzilla/show_bug.cgi?id=66176#c2")
@Test
public void testHasDiagramReadOnlyFile() throws IOException, InvalidFormatException {
try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocumentReadOnly(SIMPLE_DIAGRAM)) {
List<XSLFDiagram> diagrams = extractDiagrams(inputPptx);
assertEquals(1, diagrams.size());
XSLFDiagram diagram = diagrams.get(0);
assertTrue(diagram.hasDiagram());
}
}
@Test
public void testDiagramContainsShapes() {
XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM);
List<XSLFDiagram> diagrams = extractDiagrams(inputPptx);
assertEquals(1, diagrams.size());
public void testDiagramContainsShapes() throws IOException {
try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM)) {
List<XSLFDiagram> diagrams = extractDiagrams(inputPptx);
assertEquals(1, diagrams.size());
XSLFDiagram diagram = diagrams.get(0);
XSLFGroupShape groupShape = diagram.getGroupShape();
assertNotNull(groupShape);
XSLFDiagram diagram = diagrams.get(0);
XSLFGroupShape groupShape = diagram.getGroupShape();
assertNotNull(groupShape);
// The Group gets the same positioning as the SmartArt. This can be much wider/taller than the content inside.
assertEquals(groupShape.getAnchor().getWidth(), 113.375, 1E-4);
assertEquals(groupShape.getAnchor().getHeight(), 74, 1E-4);
assertEquals(groupShape.getAnchor().getX(), -16.75, 1E-4);
assertEquals(groupShape.getAnchor().getY(), 5.5, 1E-4);
// The Group gets the same positioning as the SmartArt. This can be much wider/taller than the content inside.
assertEquals(groupShape.getAnchor().getWidth(), 113.375, 1E-4);
assertEquals(groupShape.getAnchor().getHeight(), 74, 1E-4);
assertEquals(groupShape.getAnchor().getX(), -16.75, 1E-4);
assertEquals(groupShape.getAnchor().getY(), 5.5, 1E-4);
List<XSLFShape> shapes = groupShape.getShapes();
// 4 shapes, 3 text boxes, one shape does not have any text inside it
assertEquals(7, shapes.size());
List<XSLFShape> shapes = groupShape.getShapes();
// 4 shapes, 3 text boxes, one shape does not have any text inside it
assertEquals(7, shapes.size());
// Shape 1 - Yellow Circle - "abc" center aligned
String accent4Hex = "#ffc000"; // yellow
XSLFAutoShape yellowCircle = (XSLFAutoShape) shapes.get(0);
assertTrue(yellowCircle.getText().isEmpty());
assertEquals(accent4Hex, colorToHex(yellowCircle.getFillColor()));
// Shape 1 - Yellow Circle - "abc" center aligned
String accent4Hex = "#ffc000"; // yellow
XSLFAutoShape yellowCircle = (XSLFAutoShape) shapes.get(0);
assertTrue(yellowCircle.getText().isEmpty());
assertEquals(accent4Hex, colorToHex(yellowCircle.getFillColor()));
XSLFAutoShape yellowCircleText = (XSLFAutoShape) shapes.get(1);
assertEquals(yellowCircleText.getText(), "abc");
assertEquals(TextAlign.CENTER, yellowCircleText.getTextParagraphs().get(0).getTextAlign());
XSLFAutoShape yellowCircleText = (XSLFAutoShape) shapes.get(1);
assertEquals(yellowCircleText.getText(), "abc");
assertEquals(TextAlign.CENTER, yellowCircleText.getTextParagraphs().get(0).getTextAlign());
// Shape 2 - Gradient Blue & Purple - "def" left aligned
XSLFAutoShape gradientCircle = (XSLFAutoShape) shapes.get(2);
assertTrue(gradientCircle.getFillPaint() instanceof PaintStyle.GradientPaint);
assertTrue(gradientCircle.getText().isEmpty());
// Shape 2 - Gradient Blue & Purple - "def" left aligned
XSLFAutoShape gradientCircle = (XSLFAutoShape) shapes.get(2);
assertTrue(gradientCircle.getFillPaint() instanceof PaintStyle.GradientPaint);
assertTrue(gradientCircle.getText().isEmpty());
XSLFAutoShape gradientCircleText = (XSLFAutoShape) shapes.get(3);
assertEquals(gradientCircleText.getText(), "def");
// Even with left justification, the text is rendered on the right side of the circle because SmartArt defines
// a better visual placement for the textbox inside the txXfrm property.
assertEquals(1, gradientCircleText.getTextParagraphs().size());
XSLFTextParagraph paragraph = gradientCircleText.getTextParagraphs().get(0);
assertEquals(TextAlign.LEFT, paragraph.getTextAlign());
assertEquals(1, paragraph.getTextRuns().size());
XSLFTextRun textRun = paragraph.getTextRuns().get(0);
assertTrue(textRun.isBold());
assertTrue(textRun.isItalic());
XSLFAutoShape gradientCircleText = (XSLFAutoShape) shapes.get(3);
assertEquals(gradientCircleText.getText(), "def");
// Even with left justification, the text is rendered on the right side of the circle because SmartArt defines
// a better visual placement for the textbox inside the txXfrm property.
assertEquals(1, gradientCircleText.getTextParagraphs().size());
XSLFTextParagraph paragraph = gradientCircleText.getTextParagraphs().get(0);
assertEquals(TextAlign.LEFT, paragraph.getTextAlign());
assertEquals(1, paragraph.getTextRuns().size());
XSLFTextRun textRun = paragraph.getTextRuns().get(0);
assertTrue(textRun.isBold());
assertTrue(textRun.isItalic());
// Shape 3 - Green Circle with theme color - "ghi" right aligned
XSLFAutoShape greenCircle = (XSLFAutoShape) shapes.get(4);
ColorStyle greenCircleColorStyle = ((PaintStyle.SolidPaint) greenCircle.getFillPaint()).getSolidColor();
// The circle uses the yellow accent4 color but has HSL adjustments that make it green
assertEquals(hexToColor(accent4Hex), greenCircleColorStyle.getColor());
assertEquals(50004, greenCircleColorStyle.getAlpha()); // 50% transparency
assertEquals(6533927, greenCircleColorStyle.getHueOff());
assertEquals(6405, greenCircleColorStyle.getLumOff());
assertEquals(-27185, greenCircleColorStyle.getSatOff());
// Shape 3 - Green Circle with theme color - "ghi" right aligned
XSLFAutoShape greenCircle = (XSLFAutoShape) shapes.get(4);
ColorStyle greenCircleColorStyle = ((PaintStyle.SolidPaint) greenCircle.getFillPaint()).getSolidColor();
// The circle uses the yellow accent4 color but has HSL adjustments that make it green
assertEquals(hexToColor(accent4Hex), greenCircleColorStyle.getColor());
assertEquals(50004, greenCircleColorStyle.getAlpha()); // 50% transparency
assertEquals(6533927, greenCircleColorStyle.getHueOff());
assertEquals(6405, greenCircleColorStyle.getLumOff());
assertEquals(-27185, greenCircleColorStyle.getSatOff());
XSLFAutoShape greenCircleText = (XSLFAutoShape) shapes.get(5);
assertEquals(greenCircleText.getText(), "ghi");
assertEquals(TextAlign.RIGHT, greenCircleText.getTextParagraphs().get(0).getTextAlign());
XSLFAutoShape greenCircleText = (XSLFAutoShape) shapes.get(5);
assertEquals(greenCircleText.getText(), "ghi");
assertEquals(TextAlign.RIGHT, greenCircleText.getTextParagraphs().get(0).getTextAlign());
// Shape 4 - Circle with Picture Fill - no text
XSLFAutoShape pictureShape = (XSLFAutoShape) shapes.get(6);
assertTrue(pictureShape.getText().isEmpty());
XSLFTexturePaint texturePaint = (XSLFTexturePaint) pictureShape.getFillPaint();
assertEquals(ContentTypes.IMAGE_JPEG, texturePaint.getContentType());
// Shape 4 - Circle with Picture Fill - no text
XSLFAutoShape pictureShape = (XSLFAutoShape) shapes.get(6);
assertTrue(pictureShape.getText().isEmpty());
XSLFTexturePaint texturePaint = (XSLFTexturePaint) pictureShape.getFillPaint();
assertEquals(ContentTypes.IMAGE_JPEG, texturePaint.getContentType());
}
}
}