You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2021/01/15 22:34:35 UTC

svn commit: r1885537 - in /poi/trunk/src: ooxml/testcases/org/apache/poi/xslf/ scratchpad/testcases/org/apache/poi/hslf/model/ scratchpad/testcases/org/apache/poi/hslf/record/ scratchpad/testcases/org/apache/poi/hslf/usermodel/ scratchpad/testcases/org...

Author: kiwiwings
Date: Fri Jan 15 22:34:35 2021
New Revision: 1885537

URL: http://svn.apache.org/viewvc?rev=1885537&view=rev
Log:
Sonar fixes
add asserts to tests

Modified:
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestTextRun.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/TestHWPFPictures.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/dev/TestHWPFLister.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestPAPBinTable.java
    poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/TestXSLFBugs.java Fri Jan 15 22:34:35 2021
@@ -27,19 +27,12 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 import static org.junit.jupiter.api.Assumptions.assumeFalse;
 
 import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.RenderingHints;
-import java.awt.geom.AffineTransform;
 import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URI;
@@ -56,8 +49,6 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-import javax.imageio.ImageIO;
-
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.common.usermodel.HyperlinkType;
 import org.apache.poi.ooxml.POIXMLDocumentPart;
@@ -66,6 +57,7 @@ import org.apache.poi.openxml4j.exceptio
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.sl.draw.DrawFactory;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.sl.usermodel.Hyperlink;
@@ -1051,4 +1043,41 @@ class TestXSLFBugs {
             assertEquals("Open Jakarta POI HSSF module test  ", strings.get(1));
         }
     }
+
+
+    @Test
+    void bug59056() throws IOException {
+        assumeFalse(xslfOnly);
+
+        final double[][] clips = {
+            { 50.999999999999986, 51.0, 298.0, 98.0 },
+            { 51.00000000000003, 51.0, 298.0, 98.0 },
+            { 51.0, 51.0, 298.0, 98.0 },
+            { 250.02000796164992, 93.10370370370373, 78.61839367617523, 55.89629629629627 },
+            { 79.58198774450841, 53.20887318960063, 109.13118501448272, 9.40935058567127 },
+        };
+
+        DummyGraphics2d dgfx = new DummyGraphics2d(new NullPrintStream()) {
+            int idx = 0;
+            @Override
+            public void clip(java.awt.Shape s) {
+                assertTrue(s instanceof Rectangle2D);
+                Rectangle2D r = (Rectangle2D)s;
+
+                double[] clip = clips[idx++];
+                assertEquals(clip[0], r.getX(), 0.5);
+                assertEquals(clip[1], r.getY(), 0.5);
+                assertEquals(clip[2], r.getWidth(), 0.5);
+                assertEquals(clip[3], r.getHeight(), 0.5);
+            }
+        };
+
+        Rectangle2D box = new Rectangle2D.Double(51, 51, 298, 98);
+        DrawFactory df = DrawFactory.getInstance(dgfx);
+
+        try (SlideShow<?,?> ppt = SlideShowFactory.create(slTests.getFile("54541_cropped_bitmap.ppt"))) {
+            ppt.getSlides().get(0).getShapes().forEach(shape -> df.drawShape(dgfx, shape, box));
+        }
+    }
+
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/model/TestLine.java Fri Jan 15 22:34:35 2021
@@ -17,10 +17,17 @@
 
 package org.apache.poi.hslf.model;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import java.awt.Color;
+import java.awt.Rectangle;
+import java.awt.geom.Rectangle2D;
 import java.io.IOException;
+import java.util.Arrays;
 
+import org.apache.poi.hslf.HSLFTestDataSamples;
 import org.apache.poi.hslf.usermodel.HSLFLine;
+import org.apache.poi.hslf.usermodel.HSLFShape;
 import org.apache.poi.hslf.usermodel.HSLFSlide;
 import org.apache.poi.hslf.usermodel.HSLFSlideShow;
 import org.apache.poi.sl.usermodel.StrokeStyle.LineCompound;
@@ -32,101 +39,73 @@ import org.junit.jupiter.api.Test;
  */
 public final class TestLine {
 
-    @Test
-    void testCreateLines() throws IOException {
-        HSLFSlideShow ppt = new HSLFSlideShow();
-
-        HSLFSlide slide = ppt.createSlide();
+    private static final Object[][] lines = {
+        // line styles
+        { 75, 200, LineCompound.SINGLE, Color.blue },
+        { 75, 230, LineCompound.DOUBLE, 3.5 },
+        { 75, 260, LineCompound.TRIPLE, 6d },
+        { 75, 290, LineCompound.THICK_THIN, 4.5d },
+        { 75, 320, LineCompound.THIN_THICK, 5.5d },
+        // line dashing
+        { 450, 200, LineDash.SOLID },
+        { 450, 230, LineDash.DASH },
+        { 450, 260, LineDash.DOT },
+        { 450, 290, LineDash.DASH_DOT },
+        { 450, 320, LineDash.LG_DASH_DOT_DOT },
+        // Combinations
+        { 75, 400, LineDash.DASH_DOT, LineCompound.TRIPLE, 5d },
+        { 75, 430, LineDash.DASH, LineCompound.THICK_THIN, 4d },
+        { 75, 460, LineDash.DOT, LineCompound.DOUBLE, 8d }
+    };
 
-        slide.addTitle().setText("Lines tester");
 
-        HSLFLine line;
-
-        /**
-         * line styles
-         */
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 200, 300, 0));
-        line.setLineCompound(LineCompound.SINGLE);
-        line.setLineColor(Color.blue);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 230, 300, 0));
-        line.setLineCompound(LineCompound.DOUBLE);
-        line.setLineWidth(3.5);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 260, 300, 0));
-        line.setLineCompound(LineCompound.TRIPLE);
-        line.setLineWidth(6);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 290, 300, 0));
-        line.setLineCompound(LineCompound.THICK_THIN);
-        line.setLineWidth(4.5);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 320, 300, 0));
-        line.setLineCompound(LineCompound.THIN_THICK);
-        line.setLineWidth(5.5);
-        slide.addShape(line);
-
-        /**
-         * line dashing
-         */
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(450, 200, 300, 0));
-        line.setLineDash(LineDash.SOLID);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(450, 230, 300, 0));
-        line.setLineDash(LineDash.DASH);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(450, 260, 300, 0));
-        line.setLineDash(LineDash.DOT);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(450, 290, 300, 0));
-        line.setLineDash(LineDash.DASH_DOT);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(450, 320, 300, 0));
-        line.setLineDash(LineDash.LG_DASH_DOT_DOT);
-        slide.addShape(line);
-
-        /**
-         * Combinations
-         */
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 400, 300, 0));
-        line.setLineDash(LineDash.DASH_DOT);
-        line.setLineCompound(LineCompound.TRIPLE);
-        line.setLineWidth(5.0);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 430, 300, 0));
-        line.setLineDash(LineDash.DASH);
-        line.setLineCompound(LineCompound.THICK_THIN);
-        line.setLineWidth(4.0);
-        slide.addShape(line);
-
-        line = new HSLFLine();
-        line.setAnchor(new java.awt.Rectangle(75, 460, 300, 0));
-        line.setLineDash(LineDash.DOT);
-        line.setLineCompound(LineCompound.DOUBLE);
-        line.setLineWidth(8.0);
-        slide.addShape(line);
+    @Test
+    void testCreateLines() throws IOException {
 
-        ppt.close();
+        try (HSLFSlideShow ppt1 = new HSLFSlideShow()) {
+            HSLFSlide slide1 = ppt1.createSlide();
+            slide1.addTitle().setText("Lines tester");
+
+            for (Object[] line : lines) {
+                HSLFLine hslfLine = new HSLFLine();
+                hslfLine.setAnchor(new Rectangle((Integer)line[0], (Integer)line[1], 300, 0));
+                for (Object attr : Arrays.copyOfRange(line, 2, line.length)) {
+                    if (attr instanceof LineCompound) {
+                        hslfLine.setLineCompound((LineCompound)attr);
+                    } else if (attr instanceof Double) {
+                        hslfLine.setLineWidth((Double)attr);
+                    } else if (attr instanceof Color) {
+                        hslfLine.setLineColor((Color)attr);
+                    } else if (attr instanceof LineDash) {
+                        hslfLine.setLineDash((LineDash)attr);
+                    }
+                }
+                slide1.addShape(hslfLine);
+            }
+
+            try (HSLFSlideShow ppt2 = HSLFTestDataSamples.writeOutAndReadBack(ppt1)) {
+                HSLFSlide slide2 = ppt2.getSlides().get(0);
+
+                int idx = 0;
+                for (HSLFShape shape : slide2.getShapes().subList(1,14)) {
+                    HSLFLine hslfLine = (HSLFLine)shape;
+                    Object[] line = lines[idx++];
+                    Rectangle2D anchor = hslfLine.getAnchor();
+                    assertEquals(line[0], (int)anchor.getX());
+                    assertEquals(line[1], (int)anchor.getY());
+                    for (Object attr : Arrays.copyOfRange(line, 2, line.length)) {
+                        if (attr instanceof LineCompound) {
+                            assertEquals(attr, hslfLine.getLineCompound());
+                        } else if (attr instanceof Double) {
+                            assertEquals(attr, hslfLine.getLineWidth());
+                        } else if (attr instanceof Color) {
+                            assertEquals(attr, hslfLine.getLineColor());
+                        } else if (attr instanceof LineDash) {
+                            assertEquals(attr, hslfLine.getLineDash());
+                        }
+                    }
+                }
+            }
+        }
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java Fri Jan 15 22:34:35 2021
@@ -17,14 +17,23 @@
 
 package org.apache.poi.hslf.record;
 
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.poi.hslf.exceptions.HSLFException;
-import org.apache.poi.hslf.model.textproperties.*;
+import org.apache.poi.hslf.model.textproperties.CharFlagsTextProp;
+import org.apache.poi.hslf.model.textproperties.TextProp;
+import org.apache.poi.hslf.model.textproperties.TextPropCollection;
 import org.apache.poi.util.HexDump;
 import org.junit.jupiter.api.Test;
 
@@ -702,7 +711,7 @@ public final class TestStyleTextPropAtom
         //  all the properties the mask says we have
         // Make sure we just do the best we can
         StyleTextPropAtom stpc = new StyleTextPropAtom(data_c,0,data_c.length);
-        stpc.setParentTextSize(data_c_text_len);
+        assertDoesNotThrow(() -> stpc.setParentTextSize(data_c_text_len));
 
         // If we get here, we didn't break
     }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestBugs.java Fri Jan 15 22:34:35 2021
@@ -28,11 +28,9 @@ import static org.junit.jupiter.api.Asse
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.awt.Color;
-import java.awt.Graphics2D;
 import java.awt.geom.Ellipse2D;
 import java.awt.geom.Path2D;
 import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
@@ -67,7 +65,6 @@ import org.apache.poi.hslf.record.VBAInf
 import org.apache.poi.hslf.record.VBAInfoContainer;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.poifs.macros.VBAMacroReader;
-import org.apache.poi.sl.draw.DrawFactory;
 import org.apache.poi.sl.draw.DrawPaint;
 import org.apache.poi.sl.extractor.SlideShowExtractor;
 import org.apache.poi.sl.usermodel.ColorStyle;
@@ -87,6 +84,9 @@ import org.apache.poi.util.LittleEndian;
 import org.apache.poi.util.StringUtil;
 import org.apache.poi.util.Units;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Testcases for bugs entered in bugzilla
@@ -221,19 +221,6 @@ public final class TestBugs {
     }
 
     /**
-     * Bug 42486:  Failure parsing a seemingly valid PPT
-     */
-    @SuppressWarnings("unused")
-    @Test
-    void bug42486 () throws IOException {
-        try (HSLFSlideShow ppt = open("42486.ppt")) {
-            for (HSLFSlide slide : ppt.getSlides()) {
-                List<HSLFShape> shape = slide.getShapes();
-            }
-        }
-    }
-
-    /**
      * Bug 42524:  NPE in Shape.getShapeType()
      */
     @Test
@@ -259,7 +246,7 @@ public final class TestBugs {
      */
     @SuppressWarnings("unused")
     @Test
-    void bug42520 () throws IOException {
+    void bug42520() throws IOException {
         try (HSLFSlideShow ppt = open("42520.ppt")) {
 
             //test case from the bug report
@@ -267,6 +254,8 @@ public final class TestBugs {
             HSLFPictureShape picture = (HSLFPictureShape) shapeGroup.getShapes().get(0);
             picture.getPictureData();
 
+            boolean found = false;
+
             //walk down the tree and see if there were no errors while reading
             for (HSLFSlide slide : ppt.getSlides()) {
                 for (HSLFShape shape : slide.getShapes()) {
@@ -275,11 +264,15 @@ public final class TestBugs {
                         for (HSLFShape comp : group.getShapes()) {
                             if (comp instanceof HSLFPictureShape) {
                                 HSLFPictureData pict = ((HSLFPictureShape) comp).getPictureData();
+                                assertEquals("Rectangle 35893", comp.getShapeName());
+                                found = true;
                             }
                         }
                     }
                 }
             }
+
+            assertTrue(found);
         }
     }
 
@@ -364,17 +357,6 @@ public final class TestBugs {
     }
 
     /**
-     * Bug 44770: java.lang.RuntimeException: Couldn't instantiate the class for
-     * type with id 1036 on class class org.apache.poi.hslf.record.PPDrawing
-     */
-    @Test
-    void bug44770() throws IOException {
-        try (HSLFSlideShow ppt = open("44770.ppt")) {
-            assertNotNull(ppt.getSlides().get(0));
-        }
-    }
-
-    /**
      * Bug 41071: Will not extract text from Powerpoint TextBoxes
      */
     @Test
@@ -413,36 +395,19 @@ public final class TestBugs {
         try (HSLFSlideShow ppt = open("49648.ppt")) {
             for (HSLFSlide slide : ppt.getSlides()) {
                 for (List<HSLFTextParagraph> run : slide.getTextParagraphs()) {
+                    String repl = "With \u0123\u1234\u5678 unicode";
                     String text = HSLFTextParagraph.getRawText(run);
-                    text = text.replace("{txtTot}", "With \u0123\u1234\u5678 unicode");
+                    text = text.replace("{txtTot}", repl);
                     HSLFTextParagraph.setText(run, text);
+                    if (text.contains(repl)) {
+                        assertTrue(HSLFTextParagraph.getText(run).contains(repl));
+                    }
                 }
             }
         }
     }
 
     /**
-     * Bug 41246: AIOOB with illegal note references
-     */
-    @Test
-    void bug41246a() throws IOException {
-        try (HSLFSlideShow ppt = open("41246-1.ppt")) {
-            try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt)) {
-                assertNotNull(ppt2.getSlides().get(0));
-            }
-        }
-    }
-
-    @Test
-    void bug41246b() throws IOException {
-        try (HSLFSlideShow ppt = open("41246-2.ppt")) {
-            try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt)) {
-                assertNotNull(ppt2.getSlides().get(0));
-            }
-        }
-    }
-
-    /**
      * Bug 45776: Fix corrupt file problem using TextRun.setText
      */
     @Test
@@ -524,26 +489,6 @@ public final class TestBugs {
     }
 
     @Test
-    void bug37625() throws IOException {
-        try (HSLFSlideShow ppt1 = open("37625.ppt");
-             HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
-            assertEquals(29, ppt1.getSlides().size());
-            assertNotNull(ppt2);
-            assertEquals(29, ppt2.getSlides().size());
-        }
-    }
-
-    @Test
-    void bug57272() throws IOException {
-        try (HSLFSlideShow ppt1 = open("57272_corrupted_usereditatom.ppt");
-             HSLFSlideShow ppt2 = writeOutAndReadBack(ppt1)) {
-            assertEquals(6, ppt1.getSlides().size());
-            assertNotNull(ppt2);
-            assertEquals(6, ppt2.getSlides().size());
-        }
-    }
-
-    @Test
     void bug49541() throws IOException {
         try (HSLFSlideShow ppt = open("49541_symbol_map.ppt")) {
             HSLFSlide slide = ppt.getSlides().get(0);
@@ -554,21 +499,36 @@ public final class TestBugs {
         }
     }
 
-    @Test
-    void bug47261() throws IOException {
-        try (HSLFSlideShow ppt = open("bug47261.ppt")) {
+    @ParameterizedTest
+    @CsvSource({
+        // bug47261.ppt has actually 16 slides, but also non-conforming multiple document records
+        "bug47261.ppt, 1",
+        "bug56240.ppt, 105",
+        "bug58516.ppt, 5",
+        "57272_corrupted_usereditatom.ppt, 6",
+        "37625.ppt, 29",
+        // Bug 41246: AIOOB with illegal note references
+        "41246-1.ppt, 36",
+        "41246-2.ppt, 16",
+        // Bug 44770: java.lang.RuntimeException: Couldn't instantiate the class for
+        // type with id 1036 on class class org.apache.poi.hslf.record.PPDrawing
+        "44770.ppt, 19",
+        // Bug 42486:  Failure parsing a seemingly valid PPT
+        "42486.ppt, 33"
+    })
+    void testFile(String file, int slideCnt) throws IOException {
+        try (HSLFSlideShow ppt = open(file)) {
+            for (HSLFSlide slide : ppt.getSlides()) {
+                List<HSLFShape> shape = slide.getShapes();
+                assertFalse(shape.isEmpty());
+            }
+
+            assertNotNull(ppt.getSlides().get(0));
             ppt.removeSlide(0);
             ppt.createSlide();
-            writeOutAndReadBack(ppt).close();
-        }
-    }
-
-    @Test
-    void bug56240() throws IOException {
-        try (HSLFSlideShow ppt = open("bug56240.ppt")) {
-            int slideCnt = ppt.getSlides().size();
-            assertEquals(105, slideCnt);
-            writeOutAndReadBack(ppt).close();
+            try (HSLFSlideShow ppt2 = writeOutAndReadBack(ppt)) {
+                assertEquals(slideCnt, ppt2.getSlides().size());
+            };
         }
     }
 
@@ -601,11 +561,6 @@ public final class TestBugs {
     }
 
     @Test
-    void bug58516() throws IOException {
-        open("bug58516.ppt").close();
-    }
-
-    @Test
     void bug45124() throws IOException {
         try (HSLFSlideShow ppt = open("bug45124.ppt")) {
             Slide<?, ?> slide1 = ppt.getSlides().get(1);
@@ -771,23 +726,16 @@ public final class TestBugs {
         }
     }
 
-    @Test
-    void bug58718() throws IOException {
-        String[] files = {"bug58718_008524.ppt", "bug58718_008558.ppt", "bug58718_349008.ppt", "bug58718_008495.ppt",};
-        for (String f : files) {
-            File sample = HSLFTestDataSamples.getSampleFile(f);
-            try (SlideShowExtractor<?,?> ex = new SlideShowExtractor<>(SlideShowFactory.create(sample))) {
-                 assertNotNull(ex.getText());
-             }
-        }
-    }
-
-    @Test
-    void bug58733() throws IOException {
-        File sample = HSLFTestDataSamples.getSampleFile("bug58733_671884.ppt");
+    @ParameterizedTest
+    @ValueSource(strings = {
+        "bug58718_008524.ppt", "bug58718_008558.ppt", "bug58718_349008.ppt", "bug58718_008495.ppt",
+        "bug58733_671884.ppt"
+    })
+    void bug58718(String file) throws IOException {
+        File sample = HSLFTestDataSamples.getSampleFile(file);
         try (SlideShowExtractor<?,?> ex = new SlideShowExtractor<>(SlideShowFactory.create(sample))) {
-            assertNotNull(ex.getText());
-        }
+             assertNotNull(ex.getText());
+         }
     }
 
     @Test
@@ -832,23 +780,6 @@ public final class TestBugs {
         }
     }
 
-    @Test
-    void bug59056() throws IOException {
-        try (HSLFSlideShow ppt = open("54541_cropped_bitmap.ppt")) {
-            for (HSLFShape shape : ppt.getSlides().get(0).getShapes()) {
-                BufferedImage img = new BufferedImage(500, 300, BufferedImage.TYPE_INT_ARGB);
-                Graphics2D graphics = img.createGraphics();
-                Rectangle2D box = new Rectangle2D.Double(50, 50, 300, 100);
-                graphics.setPaint(Color.red);
-                graphics.fill(box);
-                box = new Rectangle2D.Double(box.getX() + 1, box.getY() + 1, box.getWidth() - 2, box.getHeight() - 2);
-                DrawFactory.getInstance(graphics).drawShape(graphics, shape, box);
-                graphics.dispose();
-            }
-        }
-
-    }
-
     private static HSLFSlideShow open(String fileName) throws IOException {
         File sample = HSLFTestDataSamples.getSampleFile(fileName);
         // Note: don't change the code here, it is required for Eclipse to compile the code

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestTextRun.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestTextRun.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestTextRun.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestTextRun.java Fri Jan 15 22:34:35 2021
@@ -574,12 +574,13 @@ public final class TestTextRun {
 
 	@Test
 	void testAppendEmpty() throws IOException {
-        HSLFSlideShow ppt = new HSLFSlideShow();
-        HSLFSlide s = ppt.createSlide();
-        HSLFTextBox title = s.addTitle();
-        title.setText("");
-        title.appendText("\n", true);
-        title.appendText("para", true);
-        ppt.close();
+        try (HSLFSlideShow ppt = new HSLFSlideShow()) {
+			HSLFSlide s = ppt.createSlide();
+			HSLFTextBox title = s.addTitle();
+			title.setText("");
+			title.appendText("\n", true);
+			title.appendText("para", true);
+			assertEquals("\npara", title.getText());
+		}
 	}
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hsmf/TestFixedSizedProperties.java Fri Jan 15 22:34:35 2021
@@ -18,14 +18,13 @@
 package org.apache.poi.hsmf;
 
 import static org.apache.poi.POITestCase.assertContains;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.PrintStream;
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.HashSet;
@@ -45,6 +44,7 @@ import org.apache.poi.hsmf.dev.HSMFDump;
 import org.apache.poi.hsmf.extractor.OutlookTextExtractor;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.util.LocaleUtil;
+import org.apache.poi.util.NullPrintStream;
 import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -168,19 +168,17 @@ public final class TestFixedSizedPropert
     */
    @Test
    void testReadMessageDateSucceedsWithHSMFDump() throws IOException {
-       PrintStream stream = new PrintStream(new ByteArrayOutputStream(), true, "ISO-8859-1");
        HSMFDump dump = new HSMFDump(fsMessageSucceeds);
-       dump.dump(stream);
+       assertDoesNotThrow(() -> dump.dump(new NullPrintStream()));
    }
 
    /**
     * Test to see if we can read the Date Chunk with HSMFDump.
     */
    @Test
-   void testReadMessageDateFailsWithHSMFDump() throws Exception {
-       PrintStream stream = new PrintStream(new ByteArrayOutputStream(), true, "ISO-8859-1");
+   void testReadMessageDateFailsWithHSMFDump() {
        HSMFDump dump = new HSMFDump(fsMessageFails);
-       dump.dump(stream);
+       assertDoesNotThrow(() -> dump.dump(new NullPrintStream()));
    }
 
    /**

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/HWPFTestDataSamples.java Fri Jan 15 22:34:35 2021
@@ -20,7 +20,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.net.URL;
 import java.util.zip.ZipInputStream;
 
 import org.apache.poi.POIDataSamples;
@@ -72,51 +71,6 @@ public class HWPFTestDataSamples {
                         Long.valueOf(byteArray.length), " byte(s)");
 
                 ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
-                HWPFDocument doc = new HWPFDocument(bais);
-                final long endParse = System.currentTimeMillis();
-
-                logger.log(POILogger.DEBUG, "Parsed in ",
-                        Long.valueOf(endParse - start), " ms");
-
-                return doc;
-            }
-        }
-        catch ( IOException e )
-        {
-            throw new RuntimeException( e );
-        }
-    }
-
-    /**
-     * Open a remote sample from URL. opening is performd in two phases:
-     *  (1) download content into a byte array
-     *  (2) construct HWPFDocument
-     *
-     * @param sampleFileUrl the url to open
-     */
-    public static HWPFDocument openRemoteFile( String sampleFileUrl )
-    {
-        final long start = System.currentTimeMillis();
-        try
-        {
-			logger.log(POILogger.DEBUG, "Downloading ", sampleFileUrl, " ...");
-
-            try (InputStream is = new URL(sampleFileUrl).openStream()) {
-                ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                try {
-                    IOUtils.copy(is, baos);
-                } finally {
-                    baos.close();
-                }
-
-                final long endDownload = System.currentTimeMillis();
-                byte[] byteArray = baos.toByteArray();
-
-                logger.log(POILogger.DEBUG, "Downloaded in ",
-                        Long.valueOf(endDownload - start), " ms -- ",
-                        Long.valueOf(byteArray.length), " byte(s)");
-
-                ByteArrayInputStream bais = new ByteArrayInputStream(byteArray);
                 HWPFDocument doc = new HWPFDocument(bais);
                 final long endParse = System.currentTimeMillis();
 

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/TestHWPFPictures.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/TestHWPFPictures.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/TestHWPFPictures.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/TestHWPFPictures.java Fri Jan 15 22:34:35 2021
@@ -32,56 +32,27 @@ import javax.imageio.ImageIO;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hwpf.model.PicturesTable;
 import org.apache.poi.hwpf.usermodel.Picture;
-import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 
 /**
  * Test picture support in HWPF
  */
 public final class TestHWPFPictures {
-	private String docAFile;
-	private String docBFile;
-	private String docCFile;
-	private String docDFile;
-
-	private String imgAFile;
-	private String imgBFile;
-	private String imgCFile;
-	private String imgDFile;
-
-	@BeforeEach
-    void setUp() {
-		docAFile = "testPictures.doc";
-		docBFile = "two_images.doc";
-		docCFile = "vector_image.doc";
-		docDFile = "GaiaTest.doc";
-
-		imgAFile = "simple_image.jpg";
-		imgBFile = "simple_image.png";
-		imgCFile = "vector_image.emf";
-		imgDFile = "GaiaTestImg.png";
-
+	@BeforeAll
+    static void setUp() {
 		// we use ImageIO in one of the tests here so we should ensure that the temporary directory is created correctly
 		File tempDir = new File(System.getProperty("java.io.tmpdir"));
 		assertTrue( tempDir.exists() || tempDir.mkdirs(), "Could not create temporary directory " + tempDir.getAbsolutePath() + ": " + tempDir.exists() + "/" + tempDir.isDirectory() );
 	}
 
 	/**
-	 * Test just opening the files
-	 */
-	@Test
-	void testOpen() {
-		HWPFTestDataSamples.openSampleFile(docAFile);
-		HWPFTestDataSamples.openSampleFile(docBFile);
-	}
-
-	/**
 	 * Test that we have the right numbers of images in each file
 	 */
 	@Test
 	void testImageCount() {
-		HWPFDocument docA = HWPFTestDataSamples.openSampleFile(docAFile);
-		HWPFDocument docB = HWPFTestDataSamples.openSampleFile(docBFile);
+		HWPFDocument docA = HWPFTestDataSamples.openSampleFile("testPictures.doc");
+		HWPFDocument docB = HWPFTestDataSamples.openSampleFile("two_images.doc");
 
 		assertNotNull(docA.getPicturesTable());
 		assertNotNull(docB.getPicturesTable());
@@ -101,7 +72,7 @@ public final class TestHWPFPictures {
 	 */
 	@Test
 	void testImageData() {
-		HWPFDocument docB = HWPFTestDataSamples.openSampleFile(docBFile);
+		HWPFDocument docB = HWPFTestDataSamples.openSampleFile("two_images.doc");
 		PicturesTable picB = docB.getPicturesTable();
 		List<Picture> picturesB = picB.getAllPictures();
 
@@ -114,8 +85,8 @@ public final class TestHWPFPictures {
 		assertNotNull(pic2);
 
 		// Check the same
-		byte[] pic1B = readFile(imgAFile);
-		byte[] pic2B = readFile(imgBFile);
+		byte[] pic1B = readFile("simple_image.jpg");
+		byte[] pic2B = readFile("simple_image.png");
 
 		assertArrayEquals(pic1B, pic1.getContent());
 		assertArrayEquals(pic2B, pic2.getContent());
@@ -126,7 +97,7 @@ public final class TestHWPFPictures {
 	 */
 	@Test
 	void testCompressedImageData() {
-		HWPFDocument docC = HWPFTestDataSamples.openSampleFile(docCFile);
+		HWPFDocument docC = HWPFTestDataSamples.openSampleFile("vector_image.doc");
 		PicturesTable picC = docC.getPicturesTable();
 		List<Picture> picturesC = picC.getAllPictures();
 
@@ -136,7 +107,7 @@ public final class TestHWPFPictures {
 		assertNotNull(pic);
 
 		// Check the same
-		byte[] picBytes = readFile(imgCFile);
+		byte[] picBytes = readFile("vector_image.emf");
 		assertArrayEquals(picBytes, pic.getContent());
 	}
 
@@ -171,14 +142,14 @@ public final class TestHWPFPictures {
 	 */
 	@Test
 	void testEscherDrawing() {
-		HWPFDocument docD = HWPFTestDataSamples.openSampleFile(docDFile);
+		HWPFDocument docD = HWPFTestDataSamples.openSampleFile("GaiaTest.doc");
 		List<Picture> allPictures = docD.getPicturesTable().getAllPictures();
 
 		assertEquals(1, allPictures.size());
 
 		Picture pic = allPictures.get(0);
 		assertNotNull(pic);
-		byte[] picD = readFile(imgDFile);
+		byte[] picD = readFile("GaiaTestImg.png");
 
 		assertEquals(picD.length, pic.getContent().length);
 

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToHtmlConverter.java Fri Jan 15 22:34:35 2021
@@ -17,7 +17,8 @@
 package org.apache.poi.hwpf.converter;
 
 import static org.apache.poi.POITestCase.assertContains;
-import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.apache.poi.POITestCase.assertNotContained;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.StringWriter;
 
@@ -29,223 +30,114 @@ import javax.xml.transform.stream.Stream
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.util.XMLHelper;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.CsvSource;
 import org.w3c.dom.Document;
 
 /**
  * Test cases for {@link WordToHtmlConverter}
  */
 public class TestWordToHtmlConverter {
-    private static String getHtmlText(final String sampleFileName) throws Exception {
-        return getHtmlText(sampleFileName, false);
-    }
+    private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance();
 
-    private static String getHtmlText(final String sampleFileName,
-            boolean emulatePictureStorage) throws Exception {
-        HWPFDocument hwpfDocument = new HWPFDocument(POIDataSamples
-                .getDocumentInstance().openResourceAsStream(sampleFileName));
+    @ParameterizedTest
+    @CsvSource({
+        "AIOOB-Tap.doc, <table class=\"t1\">",
+        "Bug33519.doc, " +
+            "\u041F\u043B\u0430\u043D\u0438\u043D\u0441\u043A\u0438 \u0442\u0443\u0440\u043E\u0432\u0435|" +
+            "\u042F\u0432\u043E\u0440 \u0410\u0441\u0435\u043D\u043E\u0432",
+        "Bug46610_2.doc, 012345678911234567892123456789312345678941234567890123456789112345678921234567893123456789412345678",
+        "Bug46817.doc, <table class=\"t1\">",
+        "Bug47286.doc, " +
+            "!FORMTEXT|" +
+            "color:#4f6228;|" +
+            "Passport No and the date of expire|" +
+            "mfa.gov.cy",
+        "Bug48075.doc, \u041F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u21162",
+        "innertable.doc, <span>A</span>",
+        "o_kurs.doc, \u0412\u0441\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u044B \u043D\u0443\u043C\u0435\u0440\u0443\u044E\u0442\u0441\u044F",
+        "Bug52583.doc, <select><option selected>riri</option><option>fifi</option><option>loulou</option></select>",
+        "Bug53182.doc, !italic",
+        "documentProperties.doc, " +
+            "<title>This is document title</title>|" +
+            "<meta content=\"This is document keywords\" name=\"keywords\">",
+        // email hyperlink
+        "Bug47286.doc, provisastpet@mfa.gov.cy",
+        "endingnote.doc, " +
+            "<a class=\"a1 endnoteanchor\" href=\"#endnote_1\" name=\"endnote_back_1\">1</a>|" +
+            "<a class=\"a1 endnoteindex\" href=\"#endnote_back_1\" name=\"endnote_1\">1</a><span|" +
+            "Ending note text",
+        "equation.doc, <!--Image link to '0.emf' can be here-->",
+        "hyperlink.doc, " +
+            "<span>Before text; </span><a |" +
+            "<a href=\"http://testuri.org/\"><span class=\"s1\">Hyperlink text</span></a>|" +
+            "</a><span>; after text</span>",
+        "lists-margins.doc, " +
+            ".s1{display: inline-block; text-indent: 0; min-width: 0.4861111in;}|" +
+            ".s2{display: inline-block; text-indent: 0; min-width: 0.23055555in;}|" +
+            ".s3{display: inline-block; text-indent: 0; min-width: 0.28541666in;}|" +
+            ".s4{display: inline-block; text-indent: 0; min-width: 0.28333333in;}|" +
+            ".p4{text-indent:-0.59652776in;margin-left:-0.70069444in;",
+        "pageref.doc, " +
+            "<a href=\"#userref\">|" +
+            "<a name=\"userref\">|" +
+            "1",
+        "table-merges.doc, " +
+            "<td class=\"td1\" colspan=\"3\">|" +
+            "<td class=\"td2\" colspan=\"2\">",
+        "52420.doc, " +
+            "!FORMTEXT|" +
+            "\u0417\u0410\u0414\u0410\u041d\u0418\u0415|" +
+            "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c",
+        "picture.doc, " +
+            "src=\"0.emf\"|" +
+            "width:3.1293333in;height:1.7247736in;|" +
+            "left:-0.09433333;top:-0.2573611;|" +
+            "width:3.4125in;height:2.3253334in;",
+        "pictures_escher.doc, " +
+            "<img src=\"s0.PNG\">|" +
+            "<img src=\"s808.PNG\">"
+
+    })
+    void testFile(String file, String contains) throws Exception {
+        boolean emulatePictureStorage = file.contains("picture");
+
+        String result = getHtmlText(file, emulatePictureStorage);
+        assertNotNull(result);
+        // starting with JDK 9 such unimportant whitespaces may be trimmed
+        result = result.replace("</a> <span", "</a><span");
+
+        for (String match : contains.split("\\|")) {
+            if (match.startsWith("!")) {
+                assertNotContained(result, match.substring(1));
+            } else {
+                assertContains(result, match);
+            }
+        }
+    }
 
+    private static String getHtmlText(final String sampleFileName, boolean emulatePictureStorage) throws Exception {
         Document newDocument = XMLHelper.newDocumentBuilder().newDocument();
-        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(
-                newDocument);
+        WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument);
 
-        if (emulatePictureStorage)
-        {
-            wordToHtmlConverter.setPicturesManager((content, pictureType, suggestedName, widthInches, heightInches) -> suggestedName);
-        }
+        try (HWPFDocument hwpfDocument = new HWPFDocument(SAMPLES.openResourceAsStream(sampleFileName))) {
+            if (emulatePictureStorage) {
+                wordToHtmlConverter.setPicturesManager((content, pictureType, suggestedName, widthInches, heightInches) -> suggestedName);
+            }
 
-        wordToHtmlConverter.processDocument(hwpfDocument);
+            wordToHtmlConverter.processDocument(hwpfDocument);
 
-        StringWriter stringWriter = new StringWriter();
+            StringWriter stringWriter = new StringWriter();
 
-        Transformer transformer = XMLHelper.newTransformer();
-        transformer.setOutputProperty(OutputKeys.METHOD, "html");
-        transformer.transform(
+            Transformer transformer = XMLHelper.newTransformer();
+            transformer.setOutputProperty(OutputKeys.METHOD, "html");
+            transformer.transform(
                 new DOMSource(wordToHtmlConverter.getDocument()),
                 new StreamResult(stringWriter));
 
-        return stringWriter.toString();
-    }
-
-    @Test
-    void testAIOOBTap() throws Exception {
-        String result = getHtmlText("AIOOB-Tap.doc");
-        assertContains(result, "<table class=\"t1\">");
-    }
-
-    @Test
-    void testBug33519() throws Exception {
-        String result = getHtmlText("Bug33519.doc");
-        assertContains(
-                result,
-                "\u041F\u043B\u0430\u043D\u0438\u043D\u0441\u043A\u0438 \u0442\u0443\u0440\u043E\u0432\u0435");
-        assertContains(result,
-                "\u042F\u0432\u043E\u0440 \u0410\u0441\u0435\u043D\u043E\u0432");
-    }
-
-    @Test
-    void testBug46610_2() throws Exception {
-        String result = getHtmlText("Bug46610_2.doc");
-        assertContains(
-                result,
-                "012345678911234567892123456789312345678941234567890123456789112345678921234567893123456789412345678");
-    }
-
-    @Test
-    void testBug46817() throws Exception {
-        String result = getHtmlText("Bug46817.doc");
-        final String substring = "<table class=\"t1\">";
-        assertContains(result, substring);
-    }
-
-    @Test
-    void testBug47286() throws Exception {
-        String result = getHtmlText("Bug47286.doc");
-
-        assertFalse(result.contains("FORMTEXT"));
-
-        assertContains(result, "color:#4f6228;");
-        assertContains(result, "Passport No and the date of expire");
-        assertContains(result, "mfa.gov.cy");
-    }
-
-    @Test
-    void testBug48075() throws Exception {
-        getHtmlText("Bug48075.doc");
-    }
-
-    @Test
-    void testBug52583() throws Exception {
-        String result = getHtmlText("Bug52583.doc");
-        assertContains(
-                result,
-                "<select><option selected>riri</option><option>fifi</option><option>loulou</option></select>");
-    }
-
-    @Test
-    void testBug53182() throws Exception {
-        String result = getHtmlText("Bug53182.doc");
-        assertFalse(result.contains("italic"));
-    }
-
-    @Test
-    void testDocumentProperties() throws Exception {
-        String result = getHtmlText("documentProperties.doc");
-
-        assertContains(result, "<title>This is document title</title>");
-        assertContains(result,
-                "<meta content=\"This is document keywords\" name=\"keywords\">");
-    }
-
-    @Test
-    void testEmailhyperlink() throws Exception {
-        String result = getHtmlText("Bug47286.doc");
-        final String substring = "provisastpet@mfa.gov.cy";
-        assertContains(result, substring);
-    }
-
-    @Test
-    void testEndnote() throws Exception {
-        String result = getHtmlText("endingnote.doc");
-
-        assertContains(
-                result,
-                "<a class=\"a1 endnoteanchor\" href=\"#endnote_1\" name=\"endnote_back_1\">1</a>");
-        assertContains(
-                // starting with JDK 9 such unimportant whitespaces may be trimmed
-                result.replace("</a> <span", "</a><span"),
-                "<a class=\"a1 endnoteindex\" href=\"#endnote_back_1\" name=\"endnote_1\">1</a><span");
-        assertContains(result, "Ending note text");
-    }
-
-    @Test
-    void testEquation() throws Exception {
-        String result = getHtmlText("equation.doc");
-
-        assertContains(result, "<!--Image link to '0.emf' can be here-->");
-    }
-
-    @Test
-    void testHyperlink() throws Exception {
-        String result = getHtmlText("hyperlink.doc");
-
-        assertContains(result, "<span>Before text; </span><a ");
-        assertContains(result,
-                "<a href=\"http://testuri.org/\"><span class=\"s1\">Hyperlink text</span></a>");
-        assertContains(result, "</a><span>; after text</span>");
-    }
-
-    @Test
-    void testInnerTable() throws Exception {
-        getHtmlText("innertable.doc");
-    }
-
-    @Test
-    void testListsMargins() throws Exception {
-        String result = getHtmlText("lists-margins.doc");
-
-        assertContains(result,
-                ".s1{display: inline-block; text-indent: 0; min-width: 0.4861111in;}");
-        assertContains(result,
-                ".s2{display: inline-block; text-indent: 0; min-width: 0.23055555in;}");
-        assertContains(result,
-                ".s3{display: inline-block; text-indent: 0; min-width: 0.28541666in;}");
-        assertContains(result,
-                ".s4{display: inline-block; text-indent: 0; min-width: 0.28333333in;}");
-        assertContains(result,
-                ".p4{text-indent:-0.59652776in;margin-left:-0.70069444in;");
-    }
-
-    @Test
-    void testO_kurs_doc() throws Exception {
-        getHtmlText("o_kurs.doc");
-    }
-
-    @Test
-    void testPageref() throws Exception {
-        String result = getHtmlText("pageref.doc");
-
-        assertContains(result, "<a href=\"#userref\">");
-        assertContains(result, "<a name=\"userref\">");
-        assertContains(result, "1");
-    }
-
-    @Test
-    void testPicture() throws Exception {
-        String result = getHtmlText("picture.doc", true);
-
-        // picture
-        assertContains(result, "src=\"0.emf\"");
-        // visible size
-        assertContains(result, "width:3.1293333in;height:1.7247736in;");
-        // shift due to crop
-        assertContains(result, "left:-0.09433333;top:-0.2573611;");
-        // size without crop
-        assertContains(result, "width:3.4125in;height:2.3253334in;");
-    }
-
-    @Test
-    void testPicturesEscher() throws Exception {
-        String result = getHtmlText("pictures_escher.doc", true);
-        assertContains(result, "<img src=\"s0.PNG\">");
-        assertContains(result, "<img src=\"s808.PNG\">");
-    }
-
-    @Test
-    void testTableMerges() throws Exception {
-        String result = getHtmlText("table-merges.doc");
-
-        assertContains(result, "<td class=\"td1\" colspan=\"3\">");
-        assertContains(result, "<td class=\"td2\" colspan=\"2\">");
+            return stringWriter.toString();
+        }
     }
 
-    @Test
-    void testBug52420() throws Exception {
-        String result = getHtmlText("52420.doc");
-
-        assertFalse(result.contains("FORMTEXT"));
 
-        assertContains(result, "\u0417\u0410\u0414\u0410\u041d\u0418\u0415");
-        assertContains(result, "\u041f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u0442\u0435\u043b\u044c");
-    }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/converter/TestWordToTextConverter.java Fri Jan 15 22:34:35 2021
@@ -17,6 +17,7 @@
 package org.apache.poi.hwpf.converter;
 
 import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.apache.poi.hwpf.HWPFDocument;
@@ -56,7 +57,7 @@ public class TestWordToTextConverter {
     @Test
     void testBug53380_3() throws Exception {
         try (HWPFDocument doc = openSampleFile( "Bug53380_3.doc" )) {
-            WordToTextConverter.getText(doc);
+            assertNotNull(WordToTextConverter.getText(doc));
         }
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/dev/TestHWPFLister.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/dev/TestHWPFLister.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/dev/TestHWPFLister.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/dev/TestHWPFLister.java Fri Jan 15 22:34:35 2021
@@ -16,56 +16,42 @@
 ==================================================================== */
 package org.apache.poi.hwpf.dev;
 
-import java.io.File;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+
 import java.io.PrintStream;
+import java.util.Arrays;
 
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.util.NullPrintStream;
-import org.junit.jupiter.api.AfterAll;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 public class TestHWPFLister {
-    private static PrintStream oldStdOut;
+    private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance();
+    private static final String[] CLEAR_PROPS = {
+        "org.apache.poi.hwpf.preserveBinTables",
+        "org.apache.poi.hwpf.preserveTextTable"
+    };
+
+    @ParameterizedTest
+    @ValueSource(strings = {
+        "",
+        " --dop --textPieces --textPiecesText --chpx --chpxProperties --chpxSprms --papx --papxProperties --papxSprms --paragraphs --paragraphsText --bookmarks --escher --fields --pictures --officeDrawings --styles --writereadback"
+    })
+    void main(String args) throws Exception {
+        String fileArgs = SAMPLES.getFile("SampleDoc.doc").getAbsolutePath() + args;
 
-    @BeforeAll
-    public static void muteStdout() {
-        oldStdOut = System.out;
+        PrintStream oldStdOut = System.out;
         System.setOut(new NullPrintStream());
-    }
-
-    @AfterAll
-    public static void restoreStdout() {
-        System.setOut(oldStdOut);
-    }
+        try {
 
-    @AfterEach
-    void tearDown() {
-        // the main-method sets these properties, we need to revert them here to not affect other tests
-        System.clearProperty("org.apache.poi.hwpf.preserveBinTables");
-        System.clearProperty("org.apache.poi.hwpf.preserveTextTable");
-    }
+            assertDoesNotThrow(() -> HWPFLister.main(fileArgs.split(" ")));
 
-    @Test
-    void main() throws Exception {
-        File file = POIDataSamples.getDocumentInstance().getFile("SampleDoc.doc");
-        HWPFLister.main(new String[] { file.getAbsolutePath() });
-    }
+        } finally {
+            System.setOut(oldStdOut);
 
-    @Test
-    void mainAll() throws Exception {
-        File file = POIDataSamples.getDocumentInstance().getFile("SampleDoc.doc");
-        HWPFLister.main(new String[] {
-            file.getAbsolutePath(),
-                "--dop", "--textPieces", "--textPiecesText",
-                "--chpx", "--chpxProperties", "--chpxSprms",
-                "--papx", "--papxProperties", "--papxSprms",
-                "--paragraphs", "--paragraphsText",
-                "--bookmarks", "--escher",
-                "--fields", "--pictures",
-                "--officeDrawings", "--styles",
-                "--writereadback"
-        });
+            // the main-method sets these properties, we need to revert them here to not affect other tests
+            Arrays.stream(CLEAR_PROPS).forEach(System::clearProperty);
+        }
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java Fri Jan 15 22:34:35 2021
@@ -25,8 +25,8 @@ import java.io.InputStream;
 import org.apache.poi.POIDataSamples;
 import org.apache.poi.extractor.ExtractorFactory;
 import org.apache.poi.extractor.POITextExtractor;
-import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
 
 /**
  * Tests for bugs with the WordExtractor
@@ -34,38 +34,27 @@ import org.junit.jupiter.api.Test;
 public final class TestWordExtractorBugs {
     private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance();
 
-    @Test
-    void testProblemMetadata() throws IOException {
-        InputStream is = SAMPLES.openResourceAsStream("ProblemExtracting.doc");
-		WordExtractor extractor = new WordExtractor(is);
-		is.close();
-
-		// Check it gives text without error
-		extractor.getText();
-		extractor.getParagraphText();
-		extractor.getTextFromPieces();
-		extractor.close();
+    @ParameterizedTest
+    @ValueSource(strings = {
+        "ProblemExtracting.doc",
+        // bug 50688
+        "parentinvguid.doc",
+        // Bug60374
+        "cn.orthodox.www_divenbog_APRIL_30-APRIL.DOC"
+    })
+    void testFile(String file) throws IOException {
+        try (InputStream is = SAMPLES.openResourceAsStream(file);
+             POITextExtractor ex = ExtractorFactory.createExtractor(is)) {
+            // Check it gives text without error
+            assertNotNull(ex.getText());
+            if (ex instanceof WordExtractor) {
+                WordExtractor extractor = (WordExtractor)ex;
+                assertNotNull(extractor.getParagraphText());
+                assertNotNull(extractor.getTextFromPieces());
+            } else {
+                Word6Extractor extractor = (Word6Extractor)ex;
+                assertNotNull(extractor.getParagraphText());
+            }
+        }
 	}
-
-    @Test
-    void testBug50688() throws Exception {
-        InputStream is = SAMPLES.openResourceAsStream("parentinvguid.doc");
-        WordExtractor extractor = new WordExtractor(is);
-        is.close();
-
-        // Check it gives text without error
-        extractor.getText();
-        extractor.close();
-    }
-
-    @Test
-    void testBug60374() throws Exception {
-        POIFSFileSystem fs = new POIFSFileSystem(SAMPLES.openResourceAsStream("cn.orthodox.www_divenbog_APRIL_30-APRIL.DOC"));
-        final POITextExtractor extractor = ExtractorFactory.createExtractor(fs);
-
-        // Check it gives text without error
-        assertNotNull(extractor.getText());
-
-        extractor.close();
-    }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestPAPBinTable.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestPAPBinTable.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestPAPBinTable.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/model/TestPAPBinTable.java Fri Jan 15 22:34:35 2021
@@ -17,29 +17,33 @@
 
 package org.apache.poi.hwpf.model;
 
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
 import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.poi.hwpf.HWPFDocFixture;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
+import org.apache.poi.hwpf.HWPFDocument;
+import org.apache.poi.hwpf.converter.WordToTextConverter;
 import org.apache.poi.hwpf.model.io.HWPFFileSystem;
 import org.junit.jupiter.api.Test;
 
 public final class TestPAPBinTable {
 
     @Test
-    void testObIs() throws IOException {
+    void testObIs() throws Exception {
         // shall not fail with assertions on
-        HWPFTestDataSamples.openSampleFile( "ob_is.doc" ).close();
+        try (HWPFDocument doc = openSampleFile("ob_is.doc")) {
+            assertNotNull(WordToTextConverter.getText(doc));
+        }
     }
 
     @Test
     void testReadWrite() throws IOException {
-        /** @todo verify the constructors */
+        // @todo verify the constructors
         HWPFDocFixture _hWPFDocFixture = new HWPFDocFixture( this, HWPFDocFixture.DEFAULT_TEST_FILE );
 
         _hWPFDocFixture.setUp();

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java?rev=1885537&r1=1885536&r2=1885537&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java Fri Jan 15 22:34:35 2021
@@ -20,6 +20,7 @@ import static org.apache.poi.POIDataSamp
 import static org.apache.poi.POITestCase.assertContains;
 import static org.apache.poi.POITestCase.assertNotContained;
 import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -402,8 +403,8 @@ class TestBugs {
         try (InputStream is = getDocumentInstance()
             .openResourceAsStream("Bug47742-text.txt")) {
             byte[] expectedBytes = IOUtils.toByteArray(is);
-            String expectedText = new String(expectedBytes, StandardCharsets.UTF_8)
-                .substring(1); // strip-off the unicode marker
+            // strip-off the unicode marker
+            String expectedText = new String(expectedBytes, StandardCharsets.UTF_8).substring(1);
 
             assertEqualsIgnoreNewline(expectedText, foundText);
         }
@@ -413,9 +414,10 @@ class TestBugs {
      * Bug 47958 - Exception during Escher walk of pictures
      */
     @Test
-    void test47958() {
-        HWPFDocument doc = openSampleFile("Bug47958.doc");
-        doc.getPicturesTable().getAllPictures();
+    void test47958() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Bug47958.doc")) {
+            assertDoesNotThrow(doc.getPicturesTable()::getAllPictures);
+        }
     }
 
     /**
@@ -556,42 +558,6 @@ class TestBugs {
     }
 
     /**
-     * [RESOLVED FIXED] Bug 51671 - HWPFDocument.write based on POIFSFileSystem
-     * throws a NullPointerException
-     */
-    @Test
-    void test51671() throws Exception {
-        InputStream is = getDocumentInstance()
-            .openResourceAsStream("empty.doc");
-        try (POIFSFileSystem poifsFileSystem = new POIFSFileSystem(is)) {
-            HWPFDocument hwpfDocument = new HWPFDocument(
-                poifsFileSystem.getRoot());
-            hwpfDocument.write(new ByteArrayOutputStream());
-            hwpfDocument.close();
-        }
-    }
-
-    /**
-     * Bug 51678 - Extracting text from Bug51524.zip is slow Bug 51524 -
-     * PapBinTable constructor is slow
-     */
-    @Test
-    void test51678And51524() throws IOException {
-        // YK: the test will run only if the poi.test.remote system property is
-        // set.
-        // TODO: refactor into something nicer!
-        if (System.getProperty("poi.test.remote") != null) {
-            String href = "http://domex.nps.edu/corp/files/govdocs1/007/007488.doc";
-            HWPFDocument hwpfDocument = HWPFTestDataSamples
-                .openRemoteFile(href);
-
-            try (WordExtractor wordExtractor = new WordExtractor(hwpfDocument)) {
-                wordExtractor.getText();
-            }
-        }
-    }
-
-    /**
      * [FIXED] Bug 51902 - Picture.fillRawImageContent -
      * ArrayIndexOutOfBoundsException
      */
@@ -648,7 +614,9 @@ class TestBugs {
         "cap.stanford.edu_profiles_viewbiosketch_facultyid=4009&name=m_maciver.doc, true",
         "ca.kwsymphony.www_education_School_Concert_Seat_Booking_Form_2011-12.doc, true",
         // Bug 33519 - HWPF fails to read a file
-        "Bug33519.doc, false"
+        "Bug33519.doc, false",
+        // Bug 51671 - HWPFDocument.write based on POIFSFileSystem throws a NullPointerException
+        "empty.doc, true"
     })
     void testBug51834(String file, boolean doReadBack) throws Exception {
         try (HWPFDocument doc = openSampleFile(file)) {
@@ -786,7 +754,6 @@ class TestBugs {
         try (HWPFDocument doc = openSampleFile("61490.doc")) {
             Range range = doc.getRange();
 
-            System.out.println("print table");
             TableIterator tableIter = new TableIterator(range);
             assertTrue(tableIter.hasNext());
             Table table = tableIter.next();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org