Author: fanningpj
Date: Mon Aug 15 12:59:07 2022
New Revision: 1903436

URL: http://svn.apache.org/viewvc?rev=1903436&view=rev
Log:
[bug-66040] add apparently working test cases

Modified:
    
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFShape.java

Modified: 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFShape.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFShape.java?rev=1903436&r1=1903435&r2=1903436&view=diff
==============================================================================
--- 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFShape.java
 (original)
+++ 
poi/trunk/poi-ooxml/src/test/java/org/apache/poi/xslf/usermodel/TestXSLFShape.java
 Mon Aug 15 12:59:07 2022
@@ -22,7 +22,11 @@ import static org.junit.jupiter.api.Asse
 
 import java.io.IOException;
 import java.util.List;
+import java.util.stream.Collectors;
 
+import org.apache.commons.io.output.UnsynchronizedByteArrayOutputStream;
+import org.apache.poi.xddf.usermodel.text.XDDFTextParagraph;
+import org.apache.poi.xddf.usermodel.text.XDDFTextRun;
 import org.apache.poi.xslf.XSLFTestDataSamples;
 import org.junit.jupiter.api.Test;
 import org.openxmlformats.schemas.drawingml.x2006.main.STTextUnderlineType;
@@ -31,56 +35,145 @@ class TestXSLFShape {
 
     @Test
     void testReadTextShapes() throws IOException {
-        XMLSlideShow ppt = 
XSLFTestDataSamples.openSampleDocument("shapes.pptx");
-        List<XSLFSlide> slides = ppt.getSlides();
+        try (XMLSlideShow ppt = 
XSLFTestDataSamples.openSampleDocument("shapes.pptx")) {
+            List<XSLFSlide> slides = ppt.getSlides();
 
-        XSLFSlide slide1 = slides.get(0);
-        List<XSLFShape> shapes1 = slide1.getShapes();
-        assertEquals(7, shapes1.size());
-        assertEquals("TextBox 3", shapes1.get(0).getShapeName());
-        XSLFAutoShape sh0 = (XSLFAutoShape) shapes1.get(0);
-        assertEquals("Learning PPTX", sh0.getText());
-        List<XSLFTextParagraph> paragraphs0 = sh0.getTextParagraphs();
-        assertEquals(1, paragraphs0.size());
-        XSLFTextParagraph p0 = paragraphs0.get(0);
-        assertEquals("Learning PPTX", p0.getText());
-        assertEquals(1, p0.getTextRuns().size());
-        XSLFTextRun r0 = p0.getTextRuns().get(0);
-        assertEquals("Learning PPTX", r0.getRawText());
-
-        XSLFSlide slide2 = slides.get(1);
-        List<XSLFShape> shapes2 = slide2.getShapes();
-        assertTrue(shapes2.get(0) instanceof XSLFAutoShape);
-        assertEquals("PPTX Title", ((XSLFAutoShape) shapes2.get(0)).getText());
-        XSLFAutoShape sh1 = (XSLFAutoShape) shapes2.get(0);
-        List<XSLFTextParagraph> paragraphs1 = sh1.getTextParagraphs();
-        assertEquals(1, paragraphs1.size());
-        XSLFTextParagraph p1 = paragraphs1.get(0);
-        assertEquals("PPTX Title", p1.getText());
-        List<XSLFTextRun> r2 = paragraphs1.get(0).getTextRuns();
-        assertEquals(2, r2.size());
-        assertEquals("PPTX ", r2.get(0).getRawText());
-        assertEquals("Title", r2.get(1).getRawText());
-        // Title is underlined
-        assertEquals(STTextUnderlineType.SNG, r2.get(1).getRPr(false).getU());
-
-
-        assertTrue(shapes2.get(1) instanceof XSLFAutoShape);
-        assertEquals("Subtitle\nAnd second line", ((XSLFAutoShape) 
shapes2.get(1)).getText());
-        XSLFAutoShape sh2 = (XSLFAutoShape) shapes2.get(1);
-        List<XSLFTextParagraph> paragraphs2 = sh2.getTextParagraphs();
-        assertEquals(2, paragraphs2.size());
-        assertEquals("Subtitle", paragraphs2.get(0).getText());
-        assertEquals("And second line", paragraphs2.get(1).getText());
-
-        assertEquals(1, paragraphs2.get(0).getTextRuns().size());
-        assertEquals(1, paragraphs2.get(1).getTextRuns().size());
-
-        assertEquals("Subtitle", 
paragraphs2.get(0).getTextRuns().get(0).getRawText());
-        
assertTrue(paragraphs2.get(0).getTextRuns().get(0).getRPr(false).getB());
-        assertEquals("And second line", 
paragraphs2.get(1).getTextRuns().get(0).getRawText());
+            XSLFSlide slide1 = slides.get(0);
+            List<XSLFShape> shapes1 = slide1.getShapes();
+            assertEquals(7, shapes1.size());
+            assertEquals("TextBox 3", shapes1.get(0).getShapeName());
+            XSLFAutoShape sh0 = (XSLFAutoShape) shapes1.get(0);
+            assertEquals("Learning PPTX", sh0.getText());
+            List<XSLFTextParagraph> paragraphs0 = sh0.getTextParagraphs();
+            assertEquals(1, paragraphs0.size());
+            XSLFTextParagraph p0 = paragraphs0.get(0);
+            assertEquals("Learning PPTX", p0.getText());
+            assertEquals(1, p0.getTextRuns().size());
+            XSLFTextRun r0 = p0.getTextRuns().get(0);
+            assertEquals("Learning PPTX", r0.getRawText());
+
+            XSLFSlide slide2 = slides.get(1);
+            List<XSLFShape> shapes2 = slide2.getShapes();
+            assertTrue(shapes2.get(0) instanceof XSLFAutoShape);
+            assertEquals("PPTX Title", ((XSLFAutoShape) 
shapes2.get(0)).getText());
+            XSLFAutoShape sh1 = (XSLFAutoShape) shapes2.get(0);
+            List<XSLFTextParagraph> paragraphs1 = sh1.getTextParagraphs();
+            assertEquals(1, paragraphs1.size());
+            XSLFTextParagraph p1 = paragraphs1.get(0);
+            assertEquals("PPTX Title", p1.getText());
+            List<XSLFTextRun> r2 = paragraphs1.get(0).getTextRuns();
+            assertEquals(2, r2.size());
+            assertEquals("PPTX ", r2.get(0).getRawText());
+            assertEquals("Title", r2.get(1).getRawText());
+            // Title is underlined
+            assertEquals(STTextUnderlineType.SNG, 
r2.get(1).getRPr(false).getU());
+
+
+            assertTrue(shapes2.get(1) instanceof XSLFAutoShape);
+            assertEquals("Subtitle\nAnd second line", ((XSLFAutoShape) 
shapes2.get(1)).getText());
+            XSLFAutoShape sh2 = (XSLFAutoShape) shapes2.get(1);
+            List<XSLFTextParagraph> paragraphs2 = sh2.getTextParagraphs();
+            assertEquals(2, paragraphs2.size());
+            assertEquals("Subtitle", paragraphs2.get(0).getText());
+            assertEquals("And second line", paragraphs2.get(1).getText());
+
+            assertEquals(1, paragraphs2.get(0).getTextRuns().size());
+            assertEquals(1, paragraphs2.get(1).getTextRuns().size());
+
+            assertEquals("Subtitle", 
paragraphs2.get(0).getTextRuns().get(0).getRawText());
+            
assertTrue(paragraphs2.get(0).getTextRuns().get(0).getRPr(false).getB());
+            assertEquals("And second line", 
paragraphs2.get(1).getTextRuns().get(0).getRawText());
+        }
+    }
 
-        ppt.close();
+    @Test
+    void testReplaceTextInShapes() throws IOException {
+        try (
+                XMLSlideShow ppt = 
XSLFTestDataSamples.openSampleDocument("shapes.pptx");
+                UnsynchronizedByteArrayOutputStream bos = new 
UnsynchronizedByteArrayOutputStream()
+        ) {
+            assertEquals(6, ppt.getSlides().size());
+            XSLFSlide slide0 = ppt.getSlides().get(0);
+            for (XSLFShape shape : slide0.getShapes()) {
+                if (shape instanceof XSLFTextShape) {
+                    XSLFTextShape textShape = (XSLFTextShape) shape;
+                    List<XSLFTextParagraph> textBoxParagraphs = 
textShape.getTextParagraphs();
+                    List<XSLFTextRun> textBoxParagraphTextRuns = 
textBoxParagraphs.stream()
+                            .map(XSLFTextParagraph::getTextRuns)
+                            .flatMap(List::stream)
+                            .collect(Collectors.toList());
+                    int pos = 0;
+                    for (XSLFTextRun r : textBoxParagraphTextRuns) {
+                        r.setText("Replaced" + pos++);
+                    }
+                }
+            }
+            ppt.write(bos);
+
+            try (XMLSlideShow ppt2 = new XMLSlideShow(bos.toInputStream())) {
+                assertEquals(6, ppt2.getSlides().size());
+                XSLFSlide updatedSlide = ppt2.getSlides().get(0);
+                for (XSLFShape shape : updatedSlide.getShapes()) {
+                    if (shape instanceof XSLFTextShape) {
+                        XSLFTextShape textShape = (XSLFTextShape) shape;
+                        List<XSLFTextParagraph> textBoxParagraphs = 
textShape.getTextParagraphs();
+                        List<XSLFTextRun> textBoxParagraphTextRuns = 
textBoxParagraphs.stream()
+                                .map(XSLFTextParagraph::getTextRuns)
+                                .flatMap(List::stream)
+                                .collect(Collectors.toList());
+                        int pos = 0;
+                        for (XSLFTextRun r : textBoxParagraphTextRuns) {
+                            assertEquals("Replaced" + pos++, r.getRawText());
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @Test
+    void testReplaceTextInShapesXDDF() throws IOException {
+        try (
+                XMLSlideShow ppt = 
XSLFTestDataSamples.openSampleDocument("shapes.pptx");
+                UnsynchronizedByteArrayOutputStream bos = new 
UnsynchronizedByteArrayOutputStream()
+        ) {
+            assertEquals(6, ppt.getSlides().size());
+            XSLFSlide slide0 = ppt.getSlides().get(0);
+            for (XSLFShape shape : slide0.getShapes()) {
+                if (shape instanceof XSLFTextShape) {
+                    XSLFTextShape textShape = (XSLFTextShape) shape;
+                    List<XDDFTextParagraph> textBoxParagraphs = 
textShape.getTextBody().getParagraphs();
+                    List<XDDFTextRun> textBoxParagraphTextRuns = 
textBoxParagraphs.stream()
+                            .map(XDDFTextParagraph::getTextRuns)
+                            .flatMap(List::stream)
+                            .collect(Collectors.toList());
+                    int pos = 0;
+                    for (XDDFTextRun r : textBoxParagraphTextRuns) {
+                        r.setText("Replaced" + pos++);
+                    }
+                }
+            }
+            ppt.write(bos);
+
+            try (XMLSlideShow ppt2 = new XMLSlideShow(bos.toInputStream())) {
+                assertEquals(6, ppt2.getSlides().size());
+                XSLFSlide updatedSlide = ppt2.getSlides().get(0);
+                for (XSLFShape shape : updatedSlide.getShapes()) {
+                    if (shape instanceof XSLFTextShape) {
+                        XSLFTextShape textShape = (XSLFTextShape) shape;
+                        List<XDDFTextParagraph> textBoxParagraphs = 
textShape.getTextBody().getParagraphs();
+                        List<XDDFTextRun> textBoxParagraphTextRuns = 
textBoxParagraphs.stream()
+                                .map(XDDFTextParagraph::getTextRuns)
+                                .flatMap(List::stream)
+                                .collect(Collectors.toList());
+                        int pos = 0;
+                        for (XDDFTextRun r : textBoxParagraphTextRuns) {
+                            assertEquals("Replaced" + pos++, r.getText());
+                        }
+                    }
+                }
+            }
+        }
     }
 
     @Test



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to