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 2019/12/27 23:00:20 UTC

svn commit: r1872041 [6/23] - in /poi/trunk/src: excelant/testcases/org/apache/poi/ss/examples/formula/ excelant/testcases/org/apache/poi/ss/excelant/ excelant/testcases/org/apache/poi/ss/excelant/util/ java/org/apache/poi/hssf/record/aggregates/ java/...

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestHeaderStories.java Fri Dec 27 23:00:13 2019
@@ -17,15 +17,20 @@
 
 package org.apache.poi.hwpf.usermodel;
 
-import junit.framework.TestCase;
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 
 import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Tests for the handling of header stories into headers, footers etc
  */
-public final class TestHeaderStories extends TestCase {
+@SuppressWarnings("deprecation")
+public final class TestHeaderStories {
 	private HWPFDocument none;
 	private HWPFDocument header;
 	private HWPFDocument footer;
@@ -35,19 +40,20 @@ public final class TestHeaderStories ext
 	private HWPFDocument unicode;
 	private HWPFDocument withFields;
 
-	@Override
-    protected void setUp() {
+	@Before
+    public void setUp() {
 
-		none = HWPFTestDataSamples.openSampleFile("NoHeadFoot.doc");
-		header = HWPFTestDataSamples.openSampleFile("ThreeColHead.doc");
-		footer = HWPFTestDataSamples.openSampleFile("ThreeColFoot.doc");
-		headerFooter = HWPFTestDataSamples.openSampleFile("SimpleHeadThreeColFoot.doc");
-		oddEven = HWPFTestDataSamples.openSampleFile("PageSpecificHeadFoot.doc");
-		diffFirst = HWPFTestDataSamples.openSampleFile("DiffFirstPageHeadFoot.doc");
-		unicode = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
-		withFields = HWPFTestDataSamples.openSampleFile("HeaderWithMacros.doc");
+		none = openSampleFile("NoHeadFoot.doc");
+		header = openSampleFile("ThreeColHead.doc");
+		footer = openSampleFile("ThreeColFoot.doc");
+		headerFooter = openSampleFile("SimpleHeadThreeColFoot.doc");
+		oddEven = openSampleFile("PageSpecificHeadFoot.doc");
+		diffFirst = openSampleFile("DiffFirstPageHeadFoot.doc");
+		unicode = openSampleFile("HeaderFooterUnicode.doc");
+		withFields = openSampleFile("HeaderWithMacros.doc");
 	}
 
+	@Test
 	public void testNone() {
 		HeaderStories hs = new HeaderStories(none);
 
@@ -55,6 +61,7 @@ public final class TestHeaderStories ext
 		assertEquals(0, hs.getRange().text().length());
 	}
 
+	@Test
 	public void testHeader() {
 		HeaderStories hs = new HeaderStories(header);
 
@@ -99,6 +106,7 @@ public final class TestHeaderStories ext
 		assertEquals("", hs.getOddFooter());
 	}
 
+	@Test
 	public void testFooter() {
 		HeaderStories hs = new HeaderStories(footer);
 
@@ -111,6 +119,7 @@ public final class TestHeaderStories ext
 		assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getOddFooter());
 	}
 
+	@Test
 	public void testHeaderFooter() {
 		HeaderStories hs = new HeaderStories(headerFooter);
 
@@ -123,6 +132,7 @@ public final class TestHeaderStories ext
 		assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getOddFooter());
 	}
 
+	@Test
 	public void testOddEven() {
 		HeaderStories hs = new HeaderStories(oddEven);
 
@@ -145,6 +155,7 @@ public final class TestHeaderStories ext
 		assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getFooter(3));
 	}
 
+	@Test
 	public void testFirst() {
 		HeaderStories hs = new HeaderStories(diffFirst);
 
@@ -162,6 +173,7 @@ public final class TestHeaderStories ext
 		assertEquals("Footer Left\tFooter Middle Footer Right\r\r", hs.getFooter(3));
 	}
 
+	@Test
 	public void testUnicode() {
 		HeaderStories hs = new HeaderStories(unicode);
 
@@ -175,6 +187,7 @@ public final class TestHeaderStories ext
 		assertEquals("The footer, with Moli\u00e8re, has Unicode in it.\r\r", hs.getOddFooter());
 	}
 
+	@Test
 	public void testWithFields() {
 		HeaderStories hs = new HeaderStories(withFields);
 		assertFalse(hs.areFieldsStripped());

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestLists.java Fri Dec 27 23:00:13 2019
@@ -17,240 +17,257 @@
 
 package org.apache.poi.hwpf.usermodel;
 
-import java.io.IOException;
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
-import junit.framework.TestCase;
+import java.io.IOException;
 
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.hwpf.HWPFTestDataSamples;
 import org.apache.poi.hwpf.model.ListLevel;
+import org.junit.Test;
 
 /**
  * Tests for our handling of lists
  */
-public final class TestLists extends TestCase {
-   public void testBasics() {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      Range r = doc.getRange();
-      
-      assertEquals(40, r.numParagraphs());
-      assertEquals("Heading Level 1\r", r.getParagraph(0).text());
-      assertEquals("This document has different lists in it for testing\r", r.getParagraph(1).text());
-      assertEquals("The end!\r", r.getParagraph(38).text());
-      assertEquals("\r", r.getParagraph(39).text());
-      
-      assertEquals(0, r.getParagraph(0).getLvl());
-      assertEquals(9, r.getParagraph(1).getLvl());
-      assertEquals(9, r.getParagraph(38).getLvl());
-      assertEquals(9, r.getParagraph(39).getLvl());
-   }
-   
-	public void testUnorderedLists() {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      Range r = doc.getRange();
-      assertEquals(40, r.numParagraphs());
-      
-      // Normal bullet points
-      assertEquals("This document has different lists in it for testing\r", r.getParagraph(1).text());
-      assertEquals("Unordered list 1\r", r.getParagraph(2).text());
-      assertEquals("UL 2\r", r.getParagraph(3).text());
-      assertEquals("UL 3\r", r.getParagraph(4).text());
-      assertEquals("Next up is an ordered list:\r", r.getParagraph(5).text());
-      
-      assertEquals(9, r.getParagraph(1).getLvl());
-      assertEquals(9, r.getParagraph(2).getLvl());
-      assertEquals(9, r.getParagraph(3).getLvl());
-      assertEquals(9, r.getParagraph(4).getLvl());
-      assertEquals(9, r.getParagraph(5).getLvl());
-      
-      assertEquals(0, r.getParagraph(1).getIlvl());
-      assertEquals(0, r.getParagraph(2).getIlvl());
-      assertEquals(0, r.getParagraph(3).getIlvl());
-      assertEquals(0, r.getParagraph(4).getIlvl());
-      assertEquals(0, r.getParagraph(5).getIlvl());
-      
-      // Tick bullets
-      assertEquals("Now for an un-ordered list with a different bullet style:\r", r.getParagraph(9).text());
-      assertEquals("Tick 1\r", r.getParagraph(10).text());
-      assertEquals("Tick 2\r", r.getParagraph(11).text());
-      assertEquals("Multi-level un-ordered list:\r", r.getParagraph(12).text());
-      
-      assertEquals(9, r.getParagraph(9).getLvl());
-      assertEquals(9, r.getParagraph(10).getLvl());
-      assertEquals(9, r.getParagraph(11).getLvl());
-      assertEquals(9, r.getParagraph(12).getLvl());
-
-      assertEquals(0, r.getParagraph(9).getIlvl());
-      assertEquals(0, r.getParagraph(10).getIlvl());
-      assertEquals(0, r.getParagraph(11).getIlvl());
-      assertEquals(0, r.getParagraph(12).getIlvl());
-
-      // TODO Test for tick not bullet
-	}
-   
-   public void testOrderedLists() {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      Range r = doc.getRange();
-      assertEquals(40, r.numParagraphs());
-      
-      assertEquals("Next up is an ordered list:\r", r.getParagraph(5).text());
-      assertEquals("Ordered list 1\r", r.getParagraph(6).text());
-      assertEquals("OL 2\r", r.getParagraph(7).text());
-      assertEquals("OL 3\r", r.getParagraph(8).text());
-      assertEquals("Now for an un-ordered list with a different bullet style:\r", r.getParagraph(9).text());
-      
-      assertEquals(9, r.getParagraph(5).getLvl());
-      assertEquals(9, r.getParagraph(6).getLvl());
-      assertEquals(9, r.getParagraph(7).getLvl());
-      assertEquals(9, r.getParagraph(8).getLvl());
-      assertEquals(9, r.getParagraph(9).getLvl());
-
-      assertEquals(0, r.getParagraph(5).getIlvl());
-      assertEquals(0, r.getParagraph(6).getIlvl());
-      assertEquals(0, r.getParagraph(7).getIlvl());
-      assertEquals(0, r.getParagraph(8).getIlvl());
-      assertEquals(0, r.getParagraph(9).getIlvl());
-   }
-   
-   public void testMultiLevelLists() {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      Range r = doc.getRange();
-      assertEquals(40, r.numParagraphs());
-      
-      assertEquals("Multi-level un-ordered list:\r", r.getParagraph(12).text());
-      assertEquals("ML 1:1\r", r.getParagraph(13).text());
-      assertEquals("ML 1:2\r", r.getParagraph(14).text());
-      assertEquals("ML 2:1\r", r.getParagraph(15).text());
-      assertEquals("ML 2:2\r", r.getParagraph(16).text());
-      assertEquals("ML 2:3\r", r.getParagraph(17).text());
-      assertEquals("ML 3:1\r", r.getParagraph(18).text());
-      assertEquals("ML 4:1\r", r.getParagraph(19).text());
-      assertEquals("ML 5:1\r", r.getParagraph(20).text());
-      assertEquals("ML 5:2\r", r.getParagraph(21).text());
-      assertEquals("ML 2:4\r", r.getParagraph(22).text());
-      assertEquals("ML 1:3\r", r.getParagraph(23).text());
-      assertEquals("Multi-level ordered list:\r", r.getParagraph(24).text());
-      assertEquals("OL 1\r", r.getParagraph(25).text());
-      assertEquals("OL 2\r", r.getParagraph(26).text());
-      assertEquals("OL 2.1\r", r.getParagraph(27).text());
-      assertEquals("OL 2.2\r", r.getParagraph(28).text());
-      assertEquals("OL 2.2.1\r", r.getParagraph(29).text());
-      assertEquals("OL 2.2.2\r", r.getParagraph(30).text());
-      assertEquals("OL 2.2.2.1\r", r.getParagraph(31).text());
-      assertEquals("OL 2.2.3\r", r.getParagraph(32).text());
-      assertEquals("OL 3\r", r.getParagraph(33).text());
-      assertEquals("Finally we want some indents, to tell the difference\r", r.getParagraph(34).text());
-      
-      for(int i=12; i<=34; i++) {
-         assertEquals(9, r.getParagraph(12).getLvl());
-      }
-      assertEquals(0, r.getParagraph(12).getIlvl());
-      assertEquals(0, r.getParagraph(13).getIlvl());
-      assertEquals(0, r.getParagraph(14).getIlvl());
-      assertEquals(1, r.getParagraph(15).getIlvl());
-      assertEquals(1, r.getParagraph(16).getIlvl());
-      assertEquals(1, r.getParagraph(17).getIlvl());
-      assertEquals(2, r.getParagraph(18).getIlvl());
-      assertEquals(3, r.getParagraph(19).getIlvl());
-      assertEquals(4, r.getParagraph(20).getIlvl());
-      assertEquals(4, r.getParagraph(21).getIlvl());
-      assertEquals(1, r.getParagraph(22).getIlvl());
-      assertEquals(0, r.getParagraph(23).getIlvl());
-      assertEquals(0, r.getParagraph(24).getIlvl());
-      assertEquals(0, r.getParagraph(25).getIlvl());
-      assertEquals(0, r.getParagraph(26).getIlvl());
-      assertEquals(1, r.getParagraph(27).getIlvl());
-      assertEquals(1, r.getParagraph(28).getIlvl());
-      assertEquals(2, r.getParagraph(29).getIlvl());
-      assertEquals(2, r.getParagraph(30).getIlvl());
-      assertEquals(3, r.getParagraph(31).getIlvl());
-      assertEquals(2, r.getParagraph(32).getIlvl());
-      assertEquals(0, r.getParagraph(33).getIlvl());
-      assertEquals(0, r.getParagraph(34).getIlvl());
-   }
-   
-   public void testIndentedText() {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      Range r = doc.getRange();
-      
-      assertEquals(40, r.numParagraphs());
-      assertEquals("Finally we want some indents, to tell the difference\r", r.getParagraph(34).text());
-      assertEquals("Indented once\r", r.getParagraph(35).text());
-      assertEquals("Indented twice\r", r.getParagraph(36).text());
-      assertEquals("Indented three times\r", r.getParagraph(37).text());
-      assertEquals("The end!\r", r.getParagraph(38).text());
-      
-      assertEquals(9, r.getParagraph(34).getLvl());
-      assertEquals(9, r.getParagraph(35).getLvl());
-      assertEquals(9, r.getParagraph(36).getLvl());
-      assertEquals(9, r.getParagraph(37).getLvl());
-      assertEquals(9, r.getParagraph(38).getLvl());
-      assertEquals(9, r.getParagraph(39).getLvl());
-      
-      assertEquals(0, r.getParagraph(34).getIlvl());
-      assertEquals(0, r.getParagraph(35).getIlvl());
-      assertEquals(0, r.getParagraph(36).getIlvl());
-      assertEquals(0, r.getParagraph(37).getIlvl());
-      assertEquals(0, r.getParagraph(38).getIlvl());
-      assertEquals(0, r.getParagraph(39).getIlvl());
-      
-      // TODO Test the indent
-   }
-   
-   public void testWriteRead() throws IOException {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-      doc = HWPFTestDataSamples.writeOutAndReadBack(doc);
-      
-      Range r = doc.getRange();
-      
-      // Check a couple at random
-      assertEquals(4, r.getParagraph(21).getIlvl());
-      assertEquals(1, r.getParagraph(22).getIlvl());
-      assertEquals(0, r.getParagraph(23).getIlvl());
-
-      // Try to read numCharacterRuns, see bug 50060
-      assertEquals(1, r.getParagraph(0).numCharacterRuns());
-   }
-
-   public void testSpecificNumberedOrderedListFeatures() throws IOException {
-      HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Lists.doc");
-
-      Range r = doc.getRange();
-      //these are in the numbered ordered list
-      //26 = OL 2
-      //27 = OL 2.1
-      //28 = OL 2.2
-      //29 = OL 2.2.1
-      for (int i = 26; i < 30; i++) {
-         Paragraph p = r.getParagraph(i);
-         assertTrue(p.isInList());
-         HWPFList list = p.getList();
-         ListLevel level = list.getLVL((char) p.getIlvl());
-         assertFalse(level.isLegalNumbering());
-         assertEquals(-1, level.getRestart());
-      }
-      Paragraph p = r.getParagraph(26);
-      HWPFList list = p.getList();
-      ListLevel level = list.getLVL((char) p.getIlvl());
-      byte[] lvl = level.getLevelNumberingPlaceholderOffsets();
-
-      assertEquals((byte)1, lvl[0]);
-      assertEquals((byte)0, lvl[1]);
-
-      p = r.getParagraph(27);
-      list = p.getList();
-      level = list.getLVL((char) p.getIlvl());
-      lvl = level.getLevelNumberingPlaceholderOffsets();
-      assertEquals((byte)1, lvl[0]);
-      assertEquals((byte)3, lvl[1]);
-
-      p = r.getParagraph(29);
-      list = p.getList();
-      level = list.getLVL((char) p.getIlvl());
-      lvl = level.getLevelNumberingPlaceholderOffsets();
-
-      assertEquals((byte)1, lvl[0]);
-      assertEquals((byte)3, lvl[1]);
-      assertEquals((byte)5, lvl[2]);
-   }
+public final class TestLists {
+    @Test
+    public void testBasics() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+           Range r = doc.getRange();
+
+           assertEquals(40, r.numParagraphs());
+           assertEquals("Heading Level 1\r", r.getParagraph(0).text());
+           assertEquals("This document has different lists in it for testing\r", r.getParagraph(1).text());
+           assertEquals("The end!\r", r.getParagraph(38).text());
+           assertEquals("\r", r.getParagraph(39).text());
+
+           assertEquals(0, r.getParagraph(0).getLvl());
+           assertEquals(9, r.getParagraph(1).getLvl());
+           assertEquals(9, r.getParagraph(38).getLvl());
+           assertEquals(9, r.getParagraph(39).getLvl());
+        }
+    }
+
+    @Test
+    public void testUnorderedLists() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+           Range r = doc.getRange();
+           assertEquals(40, r.numParagraphs());
+
+           // Normal bullet points
+           assertEquals("This document has different lists in it for testing\r", r.getParagraph(1).text());
+           assertEquals("Unordered list 1\r", r.getParagraph(2).text());
+           assertEquals("UL 2\r", r.getParagraph(3).text());
+           assertEquals("UL 3\r", r.getParagraph(4).text());
+           assertEquals("Next up is an ordered list:\r", r.getParagraph(5).text());
+
+           assertEquals(9, r.getParagraph(1).getLvl());
+           assertEquals(9, r.getParagraph(2).getLvl());
+           assertEquals(9, r.getParagraph(3).getLvl());
+           assertEquals(9, r.getParagraph(4).getLvl());
+           assertEquals(9, r.getParagraph(5).getLvl());
+
+           assertEquals(0, r.getParagraph(1).getIlvl());
+           assertEquals(0, r.getParagraph(2).getIlvl());
+           assertEquals(0, r.getParagraph(3).getIlvl());
+           assertEquals(0, r.getParagraph(4).getIlvl());
+           assertEquals(0, r.getParagraph(5).getIlvl());
+
+           // Tick bullets
+           assertEquals("Now for an un-ordered list with a different bullet style:\r", r.getParagraph(9).text());
+           assertEquals("Tick 1\r", r.getParagraph(10).text());
+           assertEquals("Tick 2\r", r.getParagraph(11).text());
+           assertEquals("Multi-level un-ordered list:\r", r.getParagraph(12).text());
+
+           assertEquals(9, r.getParagraph(9).getLvl());
+           assertEquals(9, r.getParagraph(10).getLvl());
+           assertEquals(9, r.getParagraph(11).getLvl());
+           assertEquals(9, r.getParagraph(12).getLvl());
+
+           assertEquals(0, r.getParagraph(9).getIlvl());
+           assertEquals(0, r.getParagraph(10).getIlvl());
+           assertEquals(0, r.getParagraph(11).getIlvl());
+           assertEquals(0, r.getParagraph(12).getIlvl());
+        }
+        // TODO Test for tick not bullet
+    }
+
+    @Test
+    public void testOrderedLists() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+            Range r = doc.getRange();
+            assertEquals(40, r.numParagraphs());
+
+            assertEquals("Next up is an ordered list:\r", r.getParagraph(5).text());
+            assertEquals("Ordered list 1\r", r.getParagraph(6).text());
+            assertEquals("OL 2\r", r.getParagraph(7).text());
+            assertEquals("OL 3\r", r.getParagraph(8).text());
+            assertEquals("Now for an un-ordered list with a different bullet style:\r", r.getParagraph(9).text());
+
+            assertEquals(9, r.getParagraph(5).getLvl());
+            assertEquals(9, r.getParagraph(6).getLvl());
+            assertEquals(9, r.getParagraph(7).getLvl());
+            assertEquals(9, r.getParagraph(8).getLvl());
+            assertEquals(9, r.getParagraph(9).getLvl());
+
+            assertEquals(0, r.getParagraph(5).getIlvl());
+            assertEquals(0, r.getParagraph(6).getIlvl());
+            assertEquals(0, r.getParagraph(7).getIlvl());
+            assertEquals(0, r.getParagraph(8).getIlvl());
+            assertEquals(0, r.getParagraph(9).getIlvl());
+        }
+    }
+
+    @Test
+    public void testMultiLevelLists() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+            Range r = doc.getRange();
+            assertEquals(40, r.numParagraphs());
+
+            assertEquals("Multi-level un-ordered list:\r", r.getParagraph(12).text());
+            assertEquals("ML 1:1\r", r.getParagraph(13).text());
+            assertEquals("ML 1:2\r", r.getParagraph(14).text());
+            assertEquals("ML 2:1\r", r.getParagraph(15).text());
+            assertEquals("ML 2:2\r", r.getParagraph(16).text());
+            assertEquals("ML 2:3\r", r.getParagraph(17).text());
+            assertEquals("ML 3:1\r", r.getParagraph(18).text());
+            assertEquals("ML 4:1\r", r.getParagraph(19).text());
+            assertEquals("ML 5:1\r", r.getParagraph(20).text());
+            assertEquals("ML 5:2\r", r.getParagraph(21).text());
+            assertEquals("ML 2:4\r", r.getParagraph(22).text());
+            assertEquals("ML 1:3\r", r.getParagraph(23).text());
+            assertEquals("Multi-level ordered list:\r", r.getParagraph(24).text());
+            assertEquals("OL 1\r", r.getParagraph(25).text());
+            assertEquals("OL 2\r", r.getParagraph(26).text());
+            assertEquals("OL 2.1\r", r.getParagraph(27).text());
+            assertEquals("OL 2.2\r", r.getParagraph(28).text());
+            assertEquals("OL 2.2.1\r", r.getParagraph(29).text());
+            assertEquals("OL 2.2.2\r", r.getParagraph(30).text());
+            assertEquals("OL 2.2.2.1\r", r.getParagraph(31).text());
+            assertEquals("OL 2.2.3\r", r.getParagraph(32).text());
+            assertEquals("OL 3\r", r.getParagraph(33).text());
+            assertEquals("Finally we want some indents, to tell the difference\r", r.getParagraph(34).text());
+
+            for (int i = 12; i <= 34; i++) {
+                assertEquals(9, r.getParagraph(12).getLvl());
+            }
+            assertEquals(0, r.getParagraph(12).getIlvl());
+            assertEquals(0, r.getParagraph(13).getIlvl());
+            assertEquals(0, r.getParagraph(14).getIlvl());
+            assertEquals(1, r.getParagraph(15).getIlvl());
+            assertEquals(1, r.getParagraph(16).getIlvl());
+            assertEquals(1, r.getParagraph(17).getIlvl());
+            assertEquals(2, r.getParagraph(18).getIlvl());
+            assertEquals(3, r.getParagraph(19).getIlvl());
+            assertEquals(4, r.getParagraph(20).getIlvl());
+            assertEquals(4, r.getParagraph(21).getIlvl());
+            assertEquals(1, r.getParagraph(22).getIlvl());
+            assertEquals(0, r.getParagraph(23).getIlvl());
+            assertEquals(0, r.getParagraph(24).getIlvl());
+            assertEquals(0, r.getParagraph(25).getIlvl());
+            assertEquals(0, r.getParagraph(26).getIlvl());
+            assertEquals(1, r.getParagraph(27).getIlvl());
+            assertEquals(1, r.getParagraph(28).getIlvl());
+            assertEquals(2, r.getParagraph(29).getIlvl());
+            assertEquals(2, r.getParagraph(30).getIlvl());
+            assertEquals(3, r.getParagraph(31).getIlvl());
+            assertEquals(2, r.getParagraph(32).getIlvl());
+            assertEquals(0, r.getParagraph(33).getIlvl());
+            assertEquals(0, r.getParagraph(34).getIlvl());
+        }
+    }
+
+    @Test
+    public void testIndentedText() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+            Range r = doc.getRange();
+
+            assertEquals(40, r.numParagraphs());
+            assertEquals("Finally we want some indents, to tell the difference\r", r.getParagraph(34).text());
+            assertEquals("Indented once\r", r.getParagraph(35).text());
+            assertEquals("Indented twice\r", r.getParagraph(36).text());
+            assertEquals("Indented three times\r", r.getParagraph(37).text());
+            assertEquals("The end!\r", r.getParagraph(38).text());
+
+            assertEquals(9, r.getParagraph(34).getLvl());
+            assertEquals(9, r.getParagraph(35).getLvl());
+            assertEquals(9, r.getParagraph(36).getLvl());
+            assertEquals(9, r.getParagraph(37).getLvl());
+            assertEquals(9, r.getParagraph(38).getLvl());
+            assertEquals(9, r.getParagraph(39).getLvl());
+
+            assertEquals(0, r.getParagraph(34).getIlvl());
+            assertEquals(0, r.getParagraph(35).getIlvl());
+            assertEquals(0, r.getParagraph(36).getIlvl());
+            assertEquals(0, r.getParagraph(37).getIlvl());
+            assertEquals(0, r.getParagraph(38).getIlvl());
+            assertEquals(0, r.getParagraph(39).getIlvl());
+        }
+
+        // TODO Test the indent
+    }
+
+    @Test
+    public void testWriteRead() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc");
+            HWPFDocument doc2 = HWPFTestDataSamples.writeOutAndReadBack(doc)) {
+
+            Range r = doc2.getRange();
+
+            // Check a couple at random
+            assertEquals(4, r.getParagraph(21).getIlvl());
+            assertEquals(1, r.getParagraph(22).getIlvl());
+            assertEquals(0, r.getParagraph(23).getIlvl());
+
+            // Try to read numCharacterRuns, see bug 50060
+            assertEquals(1, r.getParagraph(0).numCharacterRuns());
+        }
+    }
+
+    @Test
+    public void testSpecificNumberedOrderedListFeatures() throws IOException {
+        try (HWPFDocument doc = openSampleFile("Lists.doc")) {
+
+            Range r = doc.getRange();
+            //these are in the numbered ordered list
+            //26 = OL 2
+            //27 = OL 2.1
+            //28 = OL 2.2
+            //29 = OL 2.2.1
+            for (int i = 26; i < 30; i++) {
+                Paragraph p = r.getParagraph(i);
+                assertTrue(p.isInList());
+                HWPFList list = p.getList();
+                ListLevel level = list.getLVL((char) p.getIlvl());
+                assertFalse(level.isLegalNumbering());
+                assertEquals(-1, level.getRestart());
+            }
+            Paragraph p = r.getParagraph(26);
+            HWPFList list = p.getList();
+            ListLevel level = list.getLVL((char) p.getIlvl());
+            byte[] lvl = level.getLevelNumberingPlaceholderOffsets();
+
+            assertEquals((byte) 1, lvl[0]);
+            assertEquals((byte) 0, lvl[1]);
+
+            p = r.getParagraph(27);
+            list = p.getList();
+            level = list.getLVL((char) p.getIlvl());
+            lvl = level.getLevelNumberingPlaceholderOffsets();
+            assertEquals((byte) 1, lvl[0]);
+            assertEquals((byte) 3, lvl[1]);
+
+            p = r.getParagraph(29);
+            list = p.getList();
+            level = list.getLVL((char) p.getIlvl());
+            lvl = level.getLevelNumberingPlaceholderOffsets();
+
+            assertEquals((byte) 1, lvl[0]);
+            assertEquals((byte) 3, lvl[1]);
+            assertEquals((byte) 5, lvl[2]);
+        }
+    }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestOfficeDrawings.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestOfficeDrawings.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestOfficeDrawings.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestOfficeDrawings.java Fri Dec 27 23:00:13 2019
@@ -16,40 +16,34 @@
 ==================================================================== */
 package org.apache.poi.hwpf.usermodel;
 
-import junit.framework.TestCase;
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
 
 import org.apache.poi.ddf.EscherComplexProperty;
 import org.apache.poi.ddf.EscherContainerRecord;
 import org.apache.poi.ddf.EscherOptRecord;
 import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
 import org.apache.poi.util.StringUtil;
+import org.junit.Test;
 
 /**
  * Test cases for {@link OfficeDrawing} and {@link OfficeDrawingsImpl} classes.
- * 
- * @author Sergey Vladimirov (vlsergey {at} gmail {dot} com)
  */
-public class TestOfficeDrawings extends TestCase
-{
+public class TestOfficeDrawings {
     /**
      * Tests watermark text extraction
      */
-    public void testWatermark() throws Exception
-    {
-        HWPFDocument hwpfDocument = HWPFTestDataSamples
-                .openSampleFile( "watermark.doc" );
-        OfficeDrawing drawing = hwpfDocument.getOfficeDrawingsHeaders()
-                .getOfficeDrawings().iterator().next();
-        EscherContainerRecord escherContainerRecord = drawing
-                .getOfficeArtSpContainer();
+    @Test
+    public void testWatermark() throws Exception {
+        try (HWPFDocument hwpfDocument = openSampleFile("watermark.doc")) {
+            OfficeDrawing drawing = hwpfDocument.getOfficeDrawingsHeaders().getOfficeDrawings().iterator().next();
+            EscherContainerRecord escherContainerRecord = drawing.getOfficeArtSpContainer();
 
-        EscherOptRecord officeArtFOPT = escherContainerRecord
-                .getChildById( (short) 0xF00B );
-        EscherComplexProperty gtextUNICODE = officeArtFOPT
-                .lookup( 0x00c0 );
+            EscherOptRecord officeArtFOPT = escherContainerRecord.getChildById((short) 0xF00B);
+            EscherComplexProperty gtextUNICODE = officeArtFOPT.lookup(0x00c0);
 
-        String text = StringUtil.getFromUnicodeLE(gtextUNICODE.getComplexData());
-        assertEquals( "DRAFT CONTRACT\0", text );
+            String text = StringUtil.getFromUnicodeLE(gtextUNICODE.getComplexData());
+            assertEquals("DRAFT CONTRACT\0", text);
+        }
     }
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeDelete.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeDelete.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeDelete.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeDelete.java Fri Dec 27 23:00:13 2019
@@ -17,223 +17,225 @@
 
 package org.apache.poi.hwpf.usermodel;
 
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
 import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
 import org.apache.poi.hwpf.model.PAPX;
-
-import junit.framework.TestCase;
+import org.junit.Test;
 
 /**
  *	Test to see if Range.delete() works even if the Range contains a
  *	CharacterRun that uses Unicode characters.
  */
-public final class TestRangeDelete extends TestCase {
+public final class TestRangeDelete {
 
 	// u201c and u201d are "smart-quotes"
-	private final String introText =
+	private static final String introText =
 		"Introduction\r";
-	private final String fillerText =
+	private static final String fillerText =
 		"${delete} This is an MS-Word 97 formatted document created using NeoOffice v. 2.2.4 Patch 0 (OpenOffice.org v. 2.2.1).\r";
-	private final String originalText =
+	private static final String originalText =
 		"It is used to confirm that text delete works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present.  Everybody should be thankful to the ${organization} ${delete} and all the POI contributors for their assistance in this matter.\r";
-	private final String lastText =
+	private static final String lastText =
 		"Thank you, ${organization} ${delete}!\r";
-	private final String searchText = "${delete}";
-	private final String expectedText1 = " This is an MS-Word 97 formatted document created using NeoOffice v. 2.2.4 Patch 0 (OpenOffice.org v. 2.2.1).\r";
-	private final String expectedText2 =
+	private static final String searchText = "${delete}";
+	private static final String expectedText1 = " This is an MS-Word 97 formatted document created using NeoOffice v. 2.2.4 Patch 0 (OpenOffice.org v. 2.2.1).\r";
+	private static final String expectedText2 =
 		"It is used to confirm that text delete works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present.  Everybody should be thankful to the ${organization}  and all the POI contributors for their assistance in this matter.\r";
-	private final String expectedText3 = "Thank you, ${organization} !\r";
+	private static final String expectedText3 = "Thank you, ${organization} !\r";
 
-	private String illustrativeDocFile;
-
-	@Override
-    protected void setUp() {
-		illustrativeDocFile = "testRangeDelete.doc";
-	}
+	private static final String illustrativeDocFile = "testRangeDelete.doc";
 
 	/**
 	 * Test just opening the files
 	 */
-	public void testOpen() {
-
-		HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testOpen() throws IOException {
+		openSampleFile(illustrativeDocFile).close();
 	}
 
 	/**
 	 * Test (more "confirm" than test) that we have the general structure that we expect to have.
 	 */
-	public void testDocStructure() {
-
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
-		Range range;
-		Section section;
-		Paragraph para;
-		PAPX paraDef;
+	@Test
+	public void testDocStructure() throws IOException {
 
-		// First, check overall
-		range = daDoc.getOverallRange();
-		assertEquals(1, range.numSections());
-		assertEquals(5, range.numParagraphs());
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
+			Range range;
+			Section section;
+			Paragraph para;
+			PAPX paraDef;
+
+			// First, check overall
+			range = daDoc.getOverallRange();
+			assertEquals(1, range.numSections());
+			assertEquals(5, range.numParagraphs());
 
 
-		// Now, onto just the doc bit
-		range = daDoc.getRange();
+			// Now, onto just the doc bit
+			range = daDoc.getRange();
 
-		assertEquals(1, range.numSections());
-		assertEquals(1, daDoc.getSectionTable().getSections().size());
-		section = range.getSection(0);
+			assertEquals(1, range.numSections());
+			assertEquals(1, daDoc.getSectionTable().getSections().size());
+			section = range.getSection(0);
 
-		assertEquals(5, section.numParagraphs());
+			assertEquals(5, section.numParagraphs());
 
-		para = section.getParagraph(0);
-		assertEquals(1, para.numCharacterRuns());
-		assertEquals(introText, para.text());
+			para = section.getParagraph(0);
+			assertEquals(1, para.numCharacterRuns());
+			assertEquals(introText, para.text());
 
-		para = section.getParagraph(1);
-		assertEquals(5, para.numCharacterRuns());
-		assertEquals(fillerText, para.text());
+			para = section.getParagraph(1);
+			assertEquals(5, para.numCharacterRuns());
+			assertEquals(fillerText, para.text());
 
 
-		paraDef = daDoc.getParagraphTable().getParagraphs().get(2);
-		assertEquals(132, paraDef.getStart());
-		assertEquals(400, paraDef.getEnd());
+			paraDef = daDoc.getParagraphTable().getParagraphs().get(2);
+			assertEquals(132, paraDef.getStart());
+			assertEquals(400, paraDef.getEnd());
 
-		para = section.getParagraph(2);
-		assertEquals(5, para.numCharacterRuns());
-		assertEquals(originalText, para.text());
+			para = section.getParagraph(2);
+			assertEquals(5, para.numCharacterRuns());
+			assertEquals(originalText, para.text());
 
 
-		paraDef = daDoc.getParagraphTable().getParagraphs().get(3);
-		assertEquals(400, paraDef.getStart());
-		assertEquals(438, paraDef.getEnd());
+			paraDef = daDoc.getParagraphTable().getParagraphs().get(3);
+			assertEquals(400, paraDef.getStart());
+			assertEquals(438, paraDef.getEnd());
 
-		para = section.getParagraph(3);
-		assertEquals(1, para.numCharacterRuns());
-		assertEquals(lastText, para.text());
+			para = section.getParagraph(3);
+			assertEquals(1, para.numCharacterRuns());
+			assertEquals(lastText, para.text());
 
 
-		// Check things match on text length
-		assertEquals(439, range.text().length());
-		assertEquals(439, section.text().length());
-		assertEquals(439,
-				section.getParagraph(0).text().length() +
-				section.getParagraph(1).text().length() +
-				section.getParagraph(2).text().length() +
-				section.getParagraph(3).text().length() +
-				section.getParagraph(4).text().length()
-		);
+			// Check things match on text length
+			assertEquals(439, range.text().length());
+			assertEquals(439, section.text().length());
+			assertEquals(439,
+						 section.getParagraph(0).text().length() +
+								 section.getParagraph(1).text().length() +
+								 section.getParagraph(2).text().length() +
+								 section.getParagraph(3).text().length() +
+								 section.getParagraph(4).text().length()
+			);
+		}
 	}
 
 	/**
 	 * Test that we can delete text (one instance) from our Range with Unicode text.
 	 */
-	public void testRangeDeleteOne() {
-
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testRangeDeleteOne() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
-		Range range = daDoc.getOverallRange();
-		assertEquals(1, range.numSections());
+			Range range = daDoc.getOverallRange();
+			assertEquals(1, range.numSections());
 
-		Section section = range.getSection(0);
-		assertEquals(5, section.numParagraphs());
+			Section section = range.getSection(0);
+			assertEquals(5, section.numParagraphs());
 
-		Paragraph para = section.getParagraph(2);
+			Paragraph para = section.getParagraph(2);
 
-		String text = para.text();
-		assertEquals(originalText, text);
+			String text = para.text();
+			assertEquals(originalText, text);
 
-		int offset = text.indexOf(searchText);
-		assertEquals(192, offset);
+			int offset = text.indexOf(searchText);
+			assertEquals(192, offset);
 
-		int absOffset = para.getStartOffset() + offset;
-		Range subRange = new Range(absOffset, (absOffset + searchText.length()), para.getDocument());
+			int absOffset = para.getStartOffset() + offset;
+			Range subRange = new Range(absOffset, (absOffset + searchText.length()), para.getDocument());
 
-		assertEquals(searchText, subRange.text());
+			assertEquals(searchText, subRange.text());
 
-		subRange.delete();
-		daDoc.getOverallRange().sanityCheck();
-		daDoc.getRange().sanityCheck();
+			subRange.delete();
+			daDoc.getOverallRange().sanityCheck();
+			daDoc.getRange().sanityCheck();
 
-		// we need to let the model re-calculate the Range before we evaluate it
-		range = daDoc.getRange();
+			// we need to let the model re-calculate the Range before we evaluate it
+			range = daDoc.getRange();
 
-		assertEquals(1, range.numSections());
-		section = range.getSection(0);
+			assertEquals(1, range.numSections());
+			section = range.getSection(0);
 
-		assertEquals(5, section.numParagraphs());
-		para = section.getParagraph(2);
+			assertEquals(5, section.numParagraphs());
+			para = section.getParagraph(2);
 
-		text = para.text();
-		assertEquals(expectedText2, text);
+			text = para.text();
+			assertEquals(expectedText2, text);
 
-		// this can lead to a StringBufferOutOfBoundsException, so we will add it
-		// even though we don't have an assertion for it
-		Range daRange = daDoc.getRange();
-		daRange.sanityCheck();
-		daRange.text();
+			// this can lead to a StringBufferOutOfBoundsException, so we will add it
+			// even though we don't have an assertion for it
+			Range daRange = daDoc.getRange();
+			daRange.sanityCheck();
+			daRange.text();
+		}
 	}
 
 	/**
 	 * Test that we can delete text (all instances of) from our Range with Unicode text.
 	 */
-	public void testRangeDeleteAll() {
+	@Test
+	public void testRangeDeleteAll() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+			Range range = daDoc.getRange();
+			assertEquals(1, range.numSections());
 
-		Range range = daDoc.getRange();
-		assertEquals(1, range.numSections());
+			Section section = range.getSection(0);
+			assertEquals(5, section.numParagraphs());
 
-		Section section = range.getSection(0);
-		assertEquals(5, section.numParagraphs());
+			Paragraph para = section.getParagraph(2);
 
-		Paragraph para = section.getParagraph(2);
+			String text = para.text();
+			assertEquals(originalText, text);
 
-		String text = para.text();
-		assertEquals(originalText, text);
+			boolean keepLooking = true;
+			while (keepLooking) {
+				// Reload the range every time
+				range = daDoc.getRange();
+				int offset = range.text().indexOf(searchText);
+				if (offset >= 0) {
 
-		boolean keepLooking = true;
-		while (keepLooking) {
-			// Reload the range every time
-			range = daDoc.getRange();
-			int offset = range.text().indexOf(searchText);
-			if (offset >= 0) {
+					int absOffset = range.getStartOffset() + offset;
 
-				int absOffset = range.getStartOffset() + offset;
+					Range subRange = new Range(
+							absOffset, (absOffset + searchText.length()), range.getDocument());
 
-				Range subRange = new Range(
-					absOffset, (absOffset + searchText.length()), range.getDocument());
+					assertEquals(searchText, subRange.text());
 
-				assertEquals(searchText, subRange.text());
+					subRange.delete();
 
-				subRange.delete();
-
-			} else {
-				keepLooking = false;
+				} else {
+					keepLooking = false;
+				}
 			}
-		}
 
-		// we need to let the model re-calculate the Range before we use it
-		range = daDoc.getRange();
-
-		assertEquals(1, range.numSections());
-		section = range.getSection(0);
-
-		assertEquals(5, section.numParagraphs());
-
-		para = section.getParagraph(0);
-		text = para.text();
-		assertEquals(introText, text);
+			// we need to let the model re-calculate the Range before we use it
+			range = daDoc.getRange();
 
-		para = section.getParagraph(1);
-		text = para.text();
-		assertEquals(expectedText1, text);
+			assertEquals(1, range.numSections());
+			section = range.getSection(0);
 
-		para = section.getParagraph(2);
-		text = para.text();
-		assertEquals(expectedText2, text);
+			assertEquals(5, section.numParagraphs());
 
-		para = section.getParagraph(3);
-		text = para.text();
-		assertEquals(expectedText3, text);
+			para = section.getParagraph(0);
+			text = para.text();
+			assertEquals(introText, text);
+
+			para = section.getParagraph(1);
+			text = para.text();
+			assertEquals(expectedText1, text);
+
+			para = section.getParagraph(2);
+			text = para.text();
+			assertEquals(expectedText2, text);
+
+			para = section.getParagraph(3);
+			text = para.text();
+			assertEquals(expectedText3, text);
+		}
 	}
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeInsertion.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeInsertion.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeInsertion.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeInsertion.java Fri Dec 27 23:00:13 2019
@@ -17,10 +17,13 @@
 
 package org.apache.poi.hwpf.usermodel;
 
-import junit.framework.TestCase;
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
 
 import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
+import org.junit.Test;
 
 /**
  *	Test to see if Range.insertBefore() works even if the Range contains a
@@ -28,63 +31,58 @@ import org.apache.poi.hwpf.HWPFTestDataS
  *
  * TODO - re-enable me when unicode paragraph stuff is fixed!
  */
-public final class TestRangeInsertion extends TestCase {
+public final class TestRangeInsertion {
 
 	// u201c and u201d are "smart-quotes"
-	private final String originalText =
+	private static final String originalText =
 		"It is used to confirm that text insertion works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present.\r";
-	private final String textToInsert = "Look at me!  I'm cool!  ";
-	private final int insertionPoint = 122;
-
-	private String illustrativeDocFile;
+	private static final String textToInsert = "Look at me!  I'm cool!  ";
+	private static final int insertionPoint = 122;
 
-	@Override
-    protected void setUp() {
-		illustrativeDocFile = "testRangeInsertion.doc";
-	}
+	private static final String illustrativeDocFile = "testRangeInsertion.doc";
 
 	/**
 	 * Test just opening the files
 	 */
-	public void testOpen() {
-
-		HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testOpen() throws IOException {
+		openSampleFile(illustrativeDocFile).close();
 	}
 
 	/**
 	 * Test (more "confirm" than test) that we have the general structure that we expect to have.
 	 */
-	public void testDocStructure() {
+	@Test
+	public void testDocStructure() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+			Range range = daDoc.getRange();
 
-		Range range = daDoc.getRange();
+			assertEquals(1, range.numSections());
+			Section section = range.getSection(0);
 
-		assertEquals(1, range.numSections());
-		Section section = range.getSection(0);
+			assertEquals(3, section.numParagraphs());
+			Paragraph para = section.getParagraph(2);
+			assertEquals(originalText, para.text());
 
-		assertEquals(3, section.numParagraphs());
-		Paragraph para = section.getParagraph(2);
-		assertEquals(originalText, para.text());
+			assertEquals(3, para.numCharacterRuns());
+			String text =
+					para.getCharacterRun(0).text() +
+							para.getCharacterRun(1).text() +
+							para.getCharacterRun(2).text();
 
-		assertEquals(3, para.numCharacterRuns());
-		String text =
-			para.getCharacterRun(0).text() +
-			para.getCharacterRun(1).text() +
-			para.getCharacterRun(2).text()
-		;
+			assertEquals(originalText, text);
 
-		assertEquals(originalText, text);
-
-		assertEquals(insertionPoint, para.getStartOffset());
+			assertEquals(insertionPoint, para.getStartOffset());
+		}
 	}
 
 	/**
 	 * Test that we can insert text in our CharacterRun with Unicode text.
 	 */
-	public void testRangeInsertion() {
-
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testRangeInsertion() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
 //		if (false) { // TODO - delete or resurrect this code
 //			Range range = daDoc.getRange();
@@ -96,28 +94,26 @@ public final class TestRangeInsertion ex
 //			System.out.println(text);
 //		}
 
-		Range range = new Range(insertionPoint, (insertionPoint + 2), daDoc);
-		range.insertBefore(textToInsert);
-
-		// we need to let the model re-calculate the Range before we evaluate it
-		range = daDoc.getRange();
-
-		assertEquals(1, range.numSections());
-		Section section = range.getSection(0);
+			Range range = new Range(insertionPoint, (insertionPoint + 2), daDoc);
+			range.insertBefore(textToInsert);
 
-		assertEquals(3, section.numParagraphs());
-		Paragraph para = section.getParagraph(2);
-		assertEquals((textToInsert + originalText), para.text());
+			// we need to let the model re-calculate the Range before we evaluate it
+			range = daDoc.getRange();
 
-		assertEquals(3, para.numCharacterRuns());
-		String text =
-			para.getCharacterRun(0).text() +
-			para.getCharacterRun(1).text() +
-			para.getCharacterRun(2).text()
-		;
+			assertEquals(1, range.numSections());
+			Section section = range.getSection(0);
 
-		// System.out.println(text);
+			assertEquals(3, section.numParagraphs());
+			Paragraph para = section.getParagraph(2);
+			assertEquals((textToInsert + originalText), para.text());
+
+			assertEquals(3, para.numCharacterRuns());
+			String text =
+				para.getCharacterRun(0).text() +
+				para.getCharacterRun(1).text() +
+				para.getCharacterRun(2).text();
 
-		assertEquals((textToInsert + originalText), text);
+			assertEquals((textToInsert + originalText), text);
+		}
 	}
 }

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeProperties.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeProperties.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeProperties.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeProperties.java Fri Dec 27 23:00:13 2019
@@ -17,21 +17,25 @@
 
 package org.apache.poi.hwpf.usermodel;
 
-import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
-import junit.framework.TestCase;
+import java.util.List;
 
 import org.apache.poi.hwpf.HWPFDocument;
 import org.apache.poi.hwpf.HWPFTestDataSamples;
 import org.apache.poi.hwpf.model.PAPX;
 import org.apache.poi.hwpf.model.StyleSheet;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Tests to ensure that our ranges end up with
  *  the right text in them, and the right font/styling
  *  properties applied to them.
  */
-public final class TestRangeProperties extends TestCase {
+public final class TestRangeProperties {
     private static final char page_break = (char)12;
 
     private static final String u_page_1 =
@@ -64,13 +68,13 @@ public final class TestRangeProperties e
     private HWPFDocument u;
     private HWPFDocument a;
 
-    @Override
-    protected void setUp() {
+    @Before
+    public void setUp() {
         u = HWPFTestDataSamples.openSampleFile("HeaderFooterUnicode.doc");
         a = HWPFTestDataSamples.openSampleFile("SampleDoc.doc");
     }
 
-
+    @Test
     public void testAsciiTextParagraphs() {
         Range r = a.getRange();
         assertEquals(
@@ -126,6 +130,7 @@ public final class TestRangeProperties e
         assertEquals( p2_parts[2] + "\r", r.getParagraph( 7 ).text() );
     }
 
+    @Test
     public void testAsciiStyling() {
         Range r = a.getRange();
 
@@ -168,10 +173,10 @@ public final class TestRangeProperties e
      * Tests the raw definitions of the paragraphs of
      *  a unicode document
      */
+    @Test
     public void testUnicodeParagraphDefinitions() {
         Range r = u.getRange();
         String[] p1_parts = u_page_1.split("\r");
-        String[] p2_parts = u_page_2.split("\r");
 
         assertEquals(
                 u_page_1 + page_break + "\r" + u_page_2,
@@ -204,7 +209,7 @@ public final class TestRangeProperties e
         // Check that the last paragraph ends where it should do
         assertEquals(531, u.getOverallRange().text().length());
         PAPX pLast = pDefs.get(34);
-        // assertEquals(530, pLast.getEnd());
+        assertEquals(530, pLast.getEnd());
 
         // Only care about the first few really though
         PAPX p0 = pDefs.get(0);
@@ -261,6 +266,7 @@ public final class TestRangeProperties e
     /**
      * Tests the paragraph text of a unicode document
      */
+    @Test
     public void testUnicodeTextParagraphs() {
         Range r = u.getRange();
         assertEquals(
@@ -296,6 +302,8 @@ public final class TestRangeProperties e
         assertEquals( "\r", r.getParagraph( 11 ).text() );
         assertEquals( p2_parts[0] + "\r", r.getParagraph( 12 ).text() );
     }
+
+    @Test
     public void testUnicodeStyling() {
         Range r = u.getRange();
         String[] p1_parts = u_page_1.split("\r");

Modified: poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeReplacement.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeReplacement.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeReplacement.java (original)
+++ poi/trunk/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRangeReplacement.java Fri Dec 27 23:00:13 2019
@@ -17,10 +17,13 @@
 
 package org.apache.poi.hwpf.usermodel;
 
-import junit.framework.TestCase;
+import static org.apache.poi.hwpf.HWPFTestDataSamples.openSampleFile;
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
 
 import org.apache.poi.hwpf.HWPFDocument;
-import org.apache.poi.hwpf.HWPFTestDataSamples;
+import org.junit.Test;
 
 /**
  *	Test to see if Range.replaceText() works even if the Range contains a
@@ -28,125 +31,126 @@ import org.apache.poi.hwpf.HWPFTestDataS
  *
  * TODO - re-enable me when unicode paragraph stuff is fixed!
  */
-public final class TestRangeReplacement extends TestCase {
+public final class TestRangeReplacement {
 
 	// u201c and u201d are "smart-quotes"
-	private final String originalText =
+	private static final String originalText =
 		"It is used to confirm that text replacement works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present.  Everybody should be thankful to the ${organization} and all the POI contributors for their assistance in this matter.\r";
-	private final String searchText = "${organization}";
-	private final String replacementText = "Apache Software Foundation";
-	private final String expectedText2 =
+	private static final String searchText = "${organization}";
+	private static final String replacementText = "Apache Software Foundation";
+	private static final String expectedText2 =
 		"It is used to confirm that text replacement works even if Unicode characters (such as \u201c\u2014\u201d (U+2014), \u201c\u2e8e\u201d (U+2E8E), or \u201c\u2714\u201d (U+2714)) are present.  Everybody should be thankful to the Apache Software Foundation and all the POI contributors for their assistance in this matter.\r";
-	private final String expectedText3 = "Thank you, Apache Software Foundation!\r";
+	private static final String expectedText3 = "Thank you, Apache Software Foundation!\r";
 
-	private final String illustrativeDocFile = "testRangeReplacement.doc";
+	private static final String illustrativeDocFile = "testRangeReplacement.doc";
 
 	/**
 	 * Test just opening the files
 	 */
 	public void testOpen() {
-
-		HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+		openSampleFile(illustrativeDocFile);
 	}
 
 	/**
 	 * Test (more "confirm" than test) that we have the general structure that we expect to have.
 	 */
-	public void testDocStructure() {
-
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testDocStructure() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
+
+			Range range = daDoc.getRange();
+			assertEquals(414, range.text().length());
+
+			assertEquals(1, range.numSections());
+			Section section = range.getSection(0);
+			assertEquals(414, section.text().length());
+
+			assertEquals(5, section.numParagraphs());
+			Paragraph para = section.getParagraph(2);
+
+			assertEquals(5, para.numCharacterRuns());
+			String text =
+					para.getCharacterRun(0).text() +
+							para.getCharacterRun(1).text() +
+							para.getCharacterRun(2).text() +
+							para.getCharacterRun(3).text() +
+							para.getCharacterRun(4).text();
 
-		Range range = daDoc.getRange();
-		assertEquals(414, range.text().length());
-
-		assertEquals(1, range.numSections());
-		Section section = range.getSection(0);
-		assertEquals(414, section.text().length());
-
-		assertEquals(5, section.numParagraphs());
-		Paragraph para = section.getParagraph(2);
-
-		assertEquals(5, para.numCharacterRuns());
-		String text =
-			para.getCharacterRun(0).text() +
-			para.getCharacterRun(1).text() +
-			para.getCharacterRun(2).text() +
-			para.getCharacterRun(3).text() +
-			para.getCharacterRun(4).text()
-		;
-
-		assertEquals(originalText, text);
+			assertEquals(originalText, text);
+		}
 	}
 
 	/**
 	 * Test that we can replace text in our Range with Unicode text.
 	 */
-	public void testRangeReplacementOne() {
+	@Test
+	public void testRangeReplacementOne() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+			// Has one section
+			Range range = daDoc.getRange();
+			assertEquals(1, range.numSections());
 
-		// Has one section
-		Range range = daDoc.getRange();
-		assertEquals(1, range.numSections());
+			// The first section has 5 paragraphs
+			Section section = range.getSection(0);
+			assertEquals(5, section.numParagraphs());
 
-		// The first section has 5 paragraphs
-		Section section = range.getSection(0);
-		assertEquals(5, section.numParagraphs());
 
-		
-		// Change some text
-		Paragraph para = section.getParagraph(2);
+			// Change some text
+			Paragraph para = section.getParagraph(2);
 
-		String text = para.text();
-		assertEquals(originalText, text);
+			String text = para.text();
+			assertEquals(originalText, text);
 
-		int offset = text.indexOf(searchText);
-		assertEquals(181, offset);
+			int offset = text.indexOf(searchText);
+			assertEquals(181, offset);
 
-		para.replaceText(searchText, replacementText, offset);
+			para.replaceText(searchText, replacementText, offset);
 
-		// Ensure we still have one section, 5 paragraphs
-		assertEquals(1, range.numSections());
-		section = range.getSection(0);
+			// Ensure we still have one section, 5 paragraphs
+			assertEquals(1, range.numSections());
+			section = range.getSection(0);
 
-		assertEquals(5, section.numParagraphs());
-		para = section.getParagraph(2);
+			assertEquals(5, section.numParagraphs());
+			para = section.getParagraph(2);
 
-		// Ensure the text is what we should now have
-		text = para.text();
-		assertEquals(expectedText2, text);
+			// Ensure the text is what we should now have
+			text = para.text();
+			assertEquals(expectedText2, text);
+		}
 	}
 
 	/**
 	 * Test that we can replace text in our Range with Unicode text.
 	 */
-	public void testRangeReplacementAll() {
-
-		HWPFDocument daDoc = HWPFTestDataSamples.openSampleFile(illustrativeDocFile);
+	@Test
+	public void testRangeReplacementAll() throws IOException {
+		try (HWPFDocument daDoc = openSampleFile(illustrativeDocFile)) {
 
-		Range range = daDoc.getRange();
-		assertEquals(1, range.numSections());
+			Range range = daDoc.getRange();
+			assertEquals(1, range.numSections());
 
-		Section section = range.getSection(0);
-		assertEquals(5, section.numParagraphs());
+			Section section = range.getSection(0);
+			assertEquals(5, section.numParagraphs());
 
-		Paragraph para = section.getParagraph(2);
+			Paragraph para = section.getParagraph(2);
 
-		String text = para.text();
-		assertEquals(originalText, text);
+			String text = para.text();
+			assertEquals(originalText, text);
 
-		range.replaceText(searchText, replacementText);
+			range.replaceText(searchText, replacementText);
 
-		assertEquals(1, range.numSections());
-		section = range.getSection(0);
-		assertEquals(5, section.numParagraphs());
+			assertEquals(1, range.numSections());
+			section = range.getSection(0);
+			assertEquals(5, section.numParagraphs());
 
-		para = section.getParagraph(2);
-		text = para.text();
-		assertEquals(expectedText2, text);
+			para = section.getParagraph(2);
+			text = para.text();
+			assertEquals(expectedText2, text);
 
-		para = section.getParagraph(3);
-		text = para.text();
-		assertEquals(expectedText3, text);
+			para = section.getParagraph(3);
+			text = para.text();
+			assertEquals(expectedText3, text);
+		}
 	}
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestAbortableListener.java Fri Dec 27 23:00:13 2019
@@ -17,11 +17,12 @@
 
 package org.apache.poi.hssf.eventmodel;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.hssf.HSSFITestDataProvider;
 import org.apache.poi.hssf.eventusermodel.AbortableHSSFListener;
 import org.apache.poi.hssf.eventusermodel.HSSFEventFactory;
@@ -30,22 +31,20 @@ import org.apache.poi.hssf.record.BOFRec
 import org.apache.poi.hssf.record.EOFRecord;
 import org.apache.poi.hssf.record.Record;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.junit.Test;
 
 /**
  * Tests for {@link AbortableHSSFListener}
  */
-public final class TestAbortableListener extends TestCase {
+public final class TestAbortableListener {
 
-	private POIFSFileSystem openSample() {
+	private POIFSFileSystem openSample() throws IOException {
 		ByteArrayInputStream is = new ByteArrayInputStream(HSSFITestDataProvider.instance
 				.getTestDataFileContent("SimpleWithColours.xls"));
-		try {
-			return new POIFSFileSystem(is);
-		} catch (IOException e) {
-			throw new RuntimeException(e);
-		}
+		return new POIFSFileSystem(is);
 	}
 
+	@Test
 	public void testAbortingBasics() throws Exception {
 		AbortableCountingListener l = new AbortableCountingListener(1000);
 
@@ -65,7 +64,7 @@ public final class TestAbortableListener
 		assertEquals(EOFRecord.sid, l.lastRecordSeen.getSid());
 	}
 
-
+	@Test
 	public void testAbortStops() throws Exception {
 		AbortableCountingListener l = new AbortableCountingListener(1);
 
@@ -100,7 +99,7 @@ public final class TestAbortableListener
 			countSeen++;
 			lastRecordSeen = record;
 
-			if(countSeen == abortAfterIndex) {
+			if (countSeen == abortAfterIndex) {
 				return 1234;
 			}
 			return 0;

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/eventmodel/TestEventRecordFactory.java Fri Dec 27 23:00:13 2019
@@ -17,46 +17,59 @@
 
 package org.apache.poi.hssf.eventmodel;
 
-import java.io.ByteArrayInputStream;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
-import junit.framework.TestCase;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.SequenceInputStream;
+import java.util.Iterator;
+import java.util.stream.Stream;
 
+import org.apache.commons.collections4.IteratorUtils;
 import org.apache.poi.hssf.record.BOFRecord;
 import org.apache.poi.hssf.record.ContinueRecord;
 import org.apache.poi.hssf.record.EOFRecord;
 import org.apache.poi.hssf.record.Record;
 import org.apache.poi.hssf.record.RecordFactory;
+import org.apache.poi.hssf.record.StandardRecord;
 import org.apache.poi.hssf.record.TestcaseRecordInputStream;
 import org.apache.poi.hssf.record.UnknownRecord;
 import org.apache.poi.util.NotImplemented;
+import org.junit.Ignore;
+import org.junit.Test;
 
 /**
  * enclosing_type describe the purpose here
- * 
- * @author Andrew C. Oliver acoliver@apache.org
- * @author Csaba Nagy (ncsaba at yahoo dot com)
  */
-public final class TestEventRecordFactory extends TestCase {
+public final class TestEventRecordFactory {
+    private static final byte[][] CONTINUE_DATA = {
+        // an unknown record with 0 length
+        {0, -1, 0, 0,},
+        // a continuation record with 3 bytes of data
+        {0x3C, 0, 3, 0, 1, 2, 3,},
+        // one more continuation record with 1 byte of data
+        {0x3C, 0, 1, 0, 4}
+    };
 
     /**
-     * tests that the records can be processed and properly return 
-     * values.
+     * tests that the records can be processed and properly return values.
      */
-    public void testProcessRecords()
-    {
-        final boolean[] wascalled = { false, }; // hack to pass boolean by ref into inner class
-
-        ERFListener listener = new ERFListener() {
-            @Override
-            public boolean processRecord(Record rec) {
-                wascalled[0] = true;
-                assertTrue("must be BOFRecord got SID="+rec.getSid(),
-                           (rec.getSid() == BOFRecord.sid));                  
-                return true;              
-            }
+    @Test
+    public void testProcessRecords() {
+        final boolean[] wascalled = { false }; // hack to pass boolean by ref into inner class
+
+        ERFListener listener = rec -> {
+            wascalled[0] = true;
+            assertEquals("must be BOFRecord got SID=" + rec.getSid(), rec.getSid(), BOFRecord.sid);
+            return true;
         };
     	EventRecordFactory factory = new EventRecordFactory(listener, new short[] {BOFRecord.sid});
-        
+
         BOFRecord bof = new BOFRecord();
         bof.setBuild((short)0);
         bof.setBuildYear((short)1999);
@@ -64,22 +77,23 @@ public final class TestEventRecordFactor
         bof.setType(BOFRecord.TYPE_WORKBOOK);
         bof.setVersion((short)0x06);
         bof.setHistoryBitMask(BOFRecord.HISTORY_MASK);
-        
+
         EOFRecord eof = EOFRecord.instance;
     	byte[] bytes = new byte[bof.getRecordSize() + eof.getRecordSize()];
         int offset = 0;
         offset = bof.serialize(offset,bytes);
-        offset = eof.serialize(offset,bytes);
-                
-        factory.processRecords(new ByteArrayInputStream(bytes));    
-        assertTrue("The record listener must be called", wascalled[0]);    
+        eof.serialize(offset,bytes);
+
+        factory.processRecords(new ByteArrayInputStream(bytes));
+        assertTrue("The record listener must be called", wascalled[0]);
     }
-    
+
 
     /**
-     * tests that the create record function returns a properly 
+     * tests that the create record function returns a properly
      * constructed record in the simple case.
      */
+    @Test
     public void testCreateRecord() {
         BOFRecord bof = new BOFRecord();
         bof.setBuild((short)0);
@@ -88,49 +102,30 @@ public final class TestEventRecordFactor
         bof.setType(BOFRecord.TYPE_WORKBOOK);
         bof.setVersion((short)0x06);
         bof.setHistoryBitMask(BOFRecord.HISTORY_MASK);
-        
+
         byte[] bytes = bof.serialize();
-            
+
         Record[] records = RecordFactory.createRecord(TestcaseRecordInputStream.create(bytes));
 
         assertEquals("record.length must be 1, was =" + records.length, 1, records.length);
-        assertTrue("record is the same", compareRec(bof,records[0]));
-        
-    }
 
-    /**
-     * Compare the serialized bytes of two records are equal
-     * @param first the first record to compare
-     * @param second the second record to compare
-     * @return boolean whether or not the record where equal
-     */
-    private static boolean compareRec(Record first, Record second) {
-        byte[] rec1 = first.serialize();
-        byte[] rec2 = second.serialize();
-        
-        if (rec1.length != rec2.length) {
-            return false;   
-        }
-        for (int k=0; k<rec1.length; k++) {
-            if (rec1[k] != rec2[k]) {
-                return false;
-            }   
-        }
-        return true;
+        byte[] rec1 = bof.serialize();
+        byte[] rec2 = records[0].serialize();
+        assertArrayEquals(rec1, rec2);
     }
 
-    
     /**
-     * tests that the create record function returns a properly 
+     * tests that the create record function returns a properly
      * constructed record in the case of a continued record.
      * TODO - need a real world example to put in a unit test
      */
     @NotImplemented
-    public void testCreateContinuedRecord()
-    {
+    @Test
+    @Ignore
+    public void testCreateContinuedRecord() {
       //  fail("not implemented");
     }
-    
+
 
     /**
      * TEST NAME:  Test Creating ContinueRecords After Unknown Records From An InputStream <P>
@@ -140,45 +135,35 @@ public final class TestEventRecordFactor
      * FAILURE:    The wrong records are created or contain the wrong values <P>
      *
      */
-     public void testContinuedUnknownRecord() {
-        final byte[] data = {
-            0, -1, 0, 0, // an unknown record with 0 length
-            0x3C , 0, 3, 0, 1, 2, 3, // a continuation record with 3 bytes of data
-            0x3C , 0, 1, 0, 4 // one more continuation record with 1 byte of data
-        };
+    @Test
+     public void testContinuedUnknownRecord() throws IOException {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        for (byte[] b : CONTINUE_DATA) {
+            bos.write(b);
+        }
+        continueHelper(new ByteArrayInputStream(bos.toByteArray()));
+    }
 
-        final int[] recCnt = { 0 };
-        final int[] offset = { 0 };
-        ERFListener listener = new ERFListener() {
-              private final String[] expectedRecordTypes = {
-                  UnknownRecord.class.getName(),
-                  ContinueRecord.class.getName(),
-                  ContinueRecord.class.getName()
-              };
-              @Override
-            public boolean processRecord(Record rec)
-              {
-                  // System.out.println(rec.toString());
-                  assertEquals(
-                    "Record type",
-                    expectedRecordTypes[recCnt[0]],
-                    rec.getClass().getName()
-                  );
-                  compareData(rec, "Record " + recCnt[0] + ": ");
-                  recCnt[0]++;
-                  return true;
-              }
-              private void compareData(Record record, String message) {
-                  byte[] recData = record.serialize();
-                  for (int i = 0; i < recData.length; i++) {
-                      assertEquals(message + " data byte " + i, data[offset[0]++], recData[i]);
-                  }
-              }
-          };
-    	EventRecordFactory factory = new EventRecordFactory(listener, new short[] {-256, 0x3C});
-
-        factory.processRecords(new ByteArrayInputStream(data));
-        assertEquals("nr. of processed records", 3, recCnt[0]);
-        assertEquals("nr. of processed bytes", data.length, offset[0]);
+    @Test
+    @Ignore("same as testContinuedUnknownRecord but with SequenceInputStream which causes the available() bug 59893")
+    public void bug59893() {
+        Iterator<ByteArrayInputStream> iter = Stream.of(CONTINUE_DATA).map(ByteArrayInputStream::new).iterator();
+        SequenceInputStream sis = new SequenceInputStream(IteratorUtils.asEnumeration(iter));
+        continueHelper(sis);
+    }
+
+    private void continueHelper(InputStream data) {
+        Iterator<Class<? extends StandardRecord>> expectedType =
+                Stream.of(UnknownRecord.class, ContinueRecord.class, ContinueRecord.class).iterator();
+        Iterator<byte[]> expectedData = Stream.of(CONTINUE_DATA).iterator();
+
+        ERFListener listener = rec -> {
+            assertEquals(expectedType.next(), rec.getClass());
+            assertArrayEquals(expectedData.next(), rec.serialize());
+            return true;
+        };
+        EventRecordFactory factory = new EventRecordFactory(listener, new short[] {-256, 0x3C});
+        factory.processRecords(data);
+        assertFalse("left over input data", expectedData.hasNext());
     }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java Fri Dec 27 23:00:13 2019
@@ -17,13 +17,15 @@
 
 package org.apache.poi.hssf.eventusermodel;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener;
 import org.apache.poi.hssf.model.HSSFFormulaParser;
@@ -35,41 +37,50 @@ import org.apache.poi.hssf.usermodel.HSS
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 import org.apache.poi.ss.formula.ptg.Ptg;
 import org.apache.poi.ss.formula.ptg.Ref3DPtg;
+import org.junit.Before;
+import org.junit.Test;
+
 /**
  * Tests for {@link EventWorkbookBuilder}
  */
-public final class TestEventWorkbookBuilder extends TestCase {
-    private MockHSSFListener mockListen;
+public final class TestEventWorkbookBuilder {
+    private final List<FormulaRecord> fRecs = new ArrayList<>();
     private SheetRecordCollectingListener listener;
 
-    @Override
-    public void setUp() {
+    @Before
+    public void setUp() throws IOException {
         HSSFRequest req = new HSSFRequest();
-        mockListen = new MockHSSFListener();
-        listener = new SheetRecordCollectingListener(mockListen);
+        fRecs.clear();
+        listener = new SheetRecordCollectingListener(this::addFormulaRecord);
         req.addListenerForAllRecords(listener);
 
         HSSFEventFactory factory = new HSSFEventFactory();
-        try {
-            InputStream is = HSSFTestDataSamples.openSampleFileStream("3dFormulas.xls");
-            POIFSFileSystem fs = new POIFSFileSystem(is);
+        try (InputStream is = HSSFTestDataSamples.openSampleFileStream("3dFormulas.xls");
+            POIFSFileSystem fs = new POIFSFileSystem(is)) {
             factory.processWorkbookEvents(req, fs);
-        } catch (IOException e) {
-            throw new RuntimeException(e);
         }
     }
 
+    private void addFormulaRecord(Record r) {
+        if (r instanceof FormulaRecord) {
+            fRecs.add((FormulaRecord)r);
+        }
+    }
+
+    @Test
     public void testBasics() {
         assertNotNull(listener.getSSTRecord());
         assertNotNull(listener.getBoundSheetRecords());
         assertNotNull(listener.getExternSheetRecords());
     }
 
+    @Test
     public void testGetStubWorkbooks() {
         assertNotNull(listener.getStubWorkbook());
         assertNotNull(listener.getStubHSSFWorkbook());
     }
 
+    @Test
     public void testContents() {
         assertEquals(2, listener.getSSTRecord().getNumStrings());
         assertEquals(3, listener.getBoundSheetRecords().length);
@@ -83,12 +94,11 @@ public final class TestEventWorkbookBuil
         assertEquals("S2", ref.findSheetFirstNameFromExternSheet(2));
     }
 
+    @Test
     public void testFormulas() {
 
-        FormulaRecord[] fRecs = mockListen.getFormulaRecords();
-
         // Check our formula records
-        assertEquals(6, fRecs.length);
+        assertEquals(6, fRecs.size());
 
         InternalWorkbook stubWB = listener.getStubWorkbook();
         assertNotNull(stubWB);
@@ -110,7 +120,7 @@ public final class TestEventWorkbookBuil
 
         // Peer into just one formula, and check that
         //  all the ptgs give back the right things
-        Ptg[] ptgs = fRecs[0].getParsedExpression();
+        Ptg[] ptgs = fRecs.get(0).getParsedExpression();
         assertEquals(1, ptgs.length);
         assertTrue(ptgs[0] instanceof Ref3DPtg);
 
@@ -124,19 +134,19 @@ public final class TestEventWorkbookBuil
         FormulaRecord fr;
 
         // Sheet 1 A2 is on same sheet
-        fr = fRecs[0];
+        fr = fRecs.get(0);
         assertEquals(1, fr.getRow());
         assertEquals(0, fr.getColumn());
         assertEquals("Sheet1!A1", HSSFFormulaParser.toFormulaString(stubHSSF, fr.getParsedExpression()));
 
         // Sheet 1 A5 is to another sheet
-        fr = fRecs[3];
+        fr = fRecs.get(3);
         assertEquals(4, fr.getRow());
         assertEquals(0, fr.getColumn());
         assertEquals("'S2'!A1", HSSFFormulaParser.toFormulaString(stubHSSF, fr.getParsedExpression()));
 
         // Sheet 1 A7 is to another sheet, range
-        fr = fRecs[5];
+        fr = fRecs.get(5);
         assertEquals(6, fr.getRow());
         assertEquals(0, fr.getColumn());
         assertEquals("SUM(Sh3!A1:A4)", HSSFFormulaParser.toFormulaString(stubHSSF, fr.getParsedExpression()));
@@ -147,23 +157,4 @@ public final class TestEventWorkbookBuil
         assertEquals("Sheet1!A1", wb.getSheetAt(0).getRow(1).getCell(0).getCellFormula());
         assertEquals("SUM(Sh3!A1:A4)", wb.getSheetAt(0).getRow(6).getCell(0).getCellFormula());
     }
-
-    private static final class MockHSSFListener implements HSSFListener {
-        public MockHSSFListener() {}
-        private final List<Record> _records = new ArrayList<>();
-        private final List<Record> _frecs = new ArrayList<>();
-
-        @Override
-        public void processRecord(Record record) {
-            _records.add(record);
-            if(record instanceof FormulaRecord) {
-                _frecs.add(record);
-            }
-        }
-        public FormulaRecord[] getFormulaRecords() {
-            FormulaRecord[] result = new FormulaRecord[_frecs.size()];
-            _frecs.toArray(result);
-            return result;
-        }
-    }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java?rev=1872041&r1=1872040&r2=1872041&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/eventusermodel/TestHSSFEventFactory.java Fri Dec 27 23:00:13 2019
@@ -16,12 +16,17 @@
 ==================================================================== */
 
 package org.apache.poi.hssf.eventusermodel;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.apache.poi.EncryptedDocumentException;
 import org.apache.poi.hssf.HSSFTestDataSamples;
 import org.apache.poi.hssf.record.BoundSheetRecord;
@@ -36,66 +41,61 @@ import org.apache.poi.hssf.record.Select
 import org.apache.poi.hssf.record.WindowTwoRecord;
 import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.junit.After;
+import org.junit.Test;
 
 /**
  * Testing for {@link HSSFEventFactory}
  */
-public final class TestHSSFEventFactory extends TestCase {
-    private static InputStream openSample(String sampleFileName) {
-        return HSSFTestDataSamples.openSampleFileStream(sampleFileName);
+public final class TestHSSFEventFactory {
+    private final List<Record> records = new ArrayList<>();
+
+    private void openSample(String sampleFileName) throws IOException {
+        records.clear();
+        HSSFRequest req = new HSSFRequest();
+        req.addListenerForAllRecords(records::add);
+        try (InputStream is = HSSFTestDataSamples.openSampleFileStream(sampleFileName);
+             POIFSFileSystem fs = new POIFSFileSystem(is)) {
+            HSSFEventFactory factory = new HSSFEventFactory();
+            factory.processWorkbookEvents(req, fs);
+        }
     }
 
+    @Test
     public void testWithMissingRecords() throws Exception {
 
-        HSSFRequest req = new HSSFRequest();
-        MockHSSFListener mockListen = new MockHSSFListener();
-        req.addListenerForAllRecords(mockListen);
+        openSample("SimpleWithSkip.xls");
 
-        POIFSFileSystem fs = new POIFSFileSystem(openSample("SimpleWithSkip.xls"));
-        HSSFEventFactory factory = new HSSFEventFactory();
-        factory.processWorkbookEvents(req, fs);
+        int numRec = records.size();
 
-        Record[] recs = mockListen.getRecords();
         // Check we got the records
-        assertTrue( recs.length > 100 );
+        assertTrue( numRec > 100 );
 
         // Check that the last few records are as we expect
         // (Makes sure we don't accidently skip the end ones)
-        int numRec = recs.length;
-        assertEquals(WindowTwoRecord.class, recs[numRec-3].getClass());
-        assertEquals(SelectionRecord.class, recs[numRec-2].getClass());
-        assertEquals(EOFRecord.class,	   recs[numRec-1].getClass());
+        Class<?>[] exp = { WindowTwoRecord.class, SelectionRecord.class, EOFRecord.class };
+        Class<?>[] act = records.subList(numRec - 3, numRec).stream().map(Object::getClass).toArray(Class[]::new);
+        assertArrayEquals(exp, act);
     }
 
+    @Test
     public void testWithCrazyContinueRecords() throws Exception {
         // Some files have crazy ordering of their continue records
         // Check that we don't break on them (bug #42844)
 
-        HSSFRequest req = new HSSFRequest();
-        MockHSSFListener mockListen = new MockHSSFListener();
-        req.addListenerForAllRecords(mockListen);
-
-        POIFSFileSystem fs = new POIFSFileSystem(openSample("ContinueRecordProblem.xls"));
-        HSSFEventFactory factory = new HSSFEventFactory();
-        factory.processWorkbookEvents(req, fs);
+        openSample("ContinueRecordProblem.xls");
 
-        Record[] recs = mockListen.getRecords();
+        int numRec = records.size();
         // Check we got the records
-        assertTrue( recs.length > 100 );
+        assertTrue( numRec > 100 );
 
         // And none of them are continue ones
-        for (Record rec : recs) {
-            assertFalse( rec instanceof ContinueRecord );
-        }
+        assertFalse(records.stream().anyMatch(r -> r instanceof ContinueRecord));
 
         // Check that the last few records are as we expect
-        // (Makes sure we don't accidently skip the end ones)
-        int numRec = recs.length;
-        assertEquals(DVALRecord.class,    recs[numRec-4].getClass());
-        assertEquals(DVRecord.class,      recs[numRec-3].getClass());
-        assertEquals(FeatHdrRecord.class, recs[numRec-2].getClass());
-        assertEquals(EOFRecord.class,     recs[numRec-1].getClass());
+        // (Makes sure we don't accidentally skip the end ones)
+        Class<?>[] exp = { DVALRecord.class, DVRecord.class, FeatHdrRecord.class, EOFRecord.class };
+        Class<?>[] act = records.subList(numRec-4, numRec).stream().map(Object::getClass).toArray(Class[]::new);
+        assertArrayEquals(exp, act);
     }
 
     /**
@@ -103,77 +103,36 @@ public final class TestHSSFEventFactory
      * Check that HSSFEventFactory doesn't break on them.
      * (the test file was provided in a reopen of bug #42844)
      */
+    @Test
     public void testUnknownContinueRecords() throws Exception {
-
-        HSSFRequest req = new HSSFRequest();
-        MockHSSFListener mockListen = new MockHSSFListener();
-        req.addListenerForAllRecords(mockListen);
-
-        POIFSFileSystem fs = new POIFSFileSystem(openSample("42844.xls"));
-        HSSFEventFactory factory = new HSSFEventFactory();
-        factory.processWorkbookEvents(req, fs);
-    }
-
-    private static class MockHSSFListener implements HSSFListener {
-        private final List<Record> records = new ArrayList<>();
-
-        public MockHSSFListener() {}
-        public Record[] getRecords() {
-            Record[] result = new Record[records.size()];
-            records.toArray(result);
-            return result;
-        }
-
-        @Override
-        public void processRecord(Record record) {
-            records.add(record);
-        }
+        openSample("42844.xls");
     }
 
+    @Test
     public void testWithDifferentWorkbookName() throws Exception {
-        HSSFRequest req = new HSSFRequest();
-        MockHSSFListener mockListen = new MockHSSFListener();
-        req.addListenerForAllRecords(mockListen);
-
-        POIFSFileSystem fs = new POIFSFileSystem(openSample("BOOK_in_capitals.xls"));
-        HSSFEventFactory factory = new HSSFEventFactory();
-        factory.processWorkbookEvents(req, fs);
-
-        fs = new POIFSFileSystem(openSample("WORKBOOK_in_capitals.xls"));
-        factory = new HSSFEventFactory();
-        factory.processWorkbookEvents(req, fs);
+        openSample("BOOK_in_capitals.xls");
+        openSample("WORKBOOK_in_capitals.xls");
     }
 
-    public void testWithPasswordProtectedWorkbooks() throws Exception {
-        HSSFRequest req = new HSSFRequest();
-        MockHSSFListener mockListen = new MockHSSFListener();
-        req.addListenerForAllRecords(mockListen);
-
+    @Test(expected = EncryptedDocumentException.class)
+    public void testWithPasswordProtectedWorkbooksNoPass() throws Exception {
         // Without a password, can't be read
-        POIFSFileSystem fs = new POIFSFileSystem(openSample("xor-encryption-abc.xls"));
-
-        HSSFEventFactory factory = new HSSFEventFactory();
-        try {
-            factory.processWorkbookEvents(req, fs);
-            fail("Shouldn't be able to process protected workbook without the password");
-        } catch (EncryptedDocumentException e) {}
-
+        openSample("xor-encryption-abc.xls");
+    }
 
+    @Test
+    public void testWithPasswordProtectedWorkbooks() throws Exception {
         // With the password, is properly processed
         Biff8EncryptionKey.setCurrentUserPassword("abc");
         try {
-            req = new HSSFRequest();
-            mockListen = new MockHSSFListener();
-            req.addListenerForAllRecords(mockListen);
-            factory.processWorkbookEvents(req, fs);
+            openSample("xor-encryption-abc.xls");
 
             // Check we got the sheet and the contents
-            Record[] recs = mockListen.getRecords();
-            assertTrue(recs.length > 50);
+            assertTrue(records.size() > 50);
 
             // Has one sheet, with values 1,2,3 in column A rows 1-3
             boolean hasSheet = false, hasA1 = false, hasA2 = false, hasA3 = false;
-            for (Record r : recs) {
+            for (Record r : records) {
                 if (r instanceof BoundSheetRecord) {
                     BoundSheetRecord bsr = (BoundSheetRecord) r;
                     assertEquals("Sheet1", bsr.getSheetname());
@@ -204,4 +163,4 @@ public final class TestHSSFEventFactory
             Biff8EncryptionKey.setCurrentUserPassword(null);
         }
     }
-}	
+}



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