From: PJ Fanning Date: Fri, 22 Jul 2022 11:50:32 +0000 (+0000) Subject: add disabled test case X-Git-Tag: REL_5_2_3~139 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=0b0df2fe58e033bd413b3a847bbd48ed1b5d52fa;p=poi.git add disabled test case git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1902943 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java index 897fcd1d27..0c531ccd48 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/XSLFTestDataSamples.java @@ -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); diff --git a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java index ca53014864..4a61398caa 100644 --- a/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java +++ b/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFDiagram.java @@ -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 diagrams = extractDiagrams(inputPptx); - assertEquals(1, diagrams.size()); + public void testHasDiagram() throws IOException { + try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM)) { + List 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 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 diagrams = extractDiagrams(inputPptx); - assertEquals(1, diagrams.size()); - - 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); - - List 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())); - - 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()); - - 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()); - - 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()); + public void testDiagramContainsShapes() throws IOException { + try (XMLSlideShow inputPptx = XSLFTestDataSamples.openSampleDocument(SIMPLE_DIAGRAM)) { + List diagrams = extractDiagrams(inputPptx); + assertEquals(1, diagrams.size()); + + 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); + + List 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())); + + 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()); + + 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()); + + 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()); + } } }