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