diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java index d18e8a26d..820f099ee 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java @@ -689,4 +689,34 @@ public final class TestBugs { ppt2.close(); } + + @Test + public void bug45088() throws IOException { + String template = "[SYSDATE]"; + String textExp = "REPLACED_DATE_WITH_A_LONG_ONE"; + + HSLFSlideShow ppt1 = (HSLFSlideShow)SlideShowFactory.create(_slTests.getFile("bug45088.ppt")); + for (HSLFSlide slide : ppt1.getSlides()) { + for (List paraList : slide.getTextParagraphs()) { + for (HSLFTextParagraph para : paraList) { + for (HSLFTextRun run : para.getTextRuns()) { + String text = run.getRawText(); + if (text != null && text.contains(template)) { + String replacedText = text.replace(template, textExp); + run.setText(replacedText); + para.setDirty(); + } + } + } + } + } + + HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1); + ppt1.close(); + + HSLFTextBox tb = (HSLFTextBox)ppt2.getSlides().get(0).getShapes().get(1); + String textAct = tb.getTextParagraphs().get(0).getTextRuns().get(0).getRawText().trim(); + assertEquals(textExp, textAct); + ppt2.close(); + } } diff --git a/test-data/slideshow/bug45088.ppt b/test-data/slideshow/bug45088.ppt new file mode 100644 index 000000000..e4be0f3f9 Binary files /dev/null and b/test-data/slideshow/bug45088.ppt differ