From 80e397389f858945701011ebae3c782188e1fb61 Mon Sep 17 00:00:00 2001 From: Andreas Beeker Date: Mon, 23 Jan 2017 00:31:27 +0000 Subject: [PATCH] fix eclipse warnings - close resources git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1779869 13f79535-47bb-0310-9956-ffa450edef68 --- .../extractor/TestXDGFVisioExtractor.java | 44 +- .../poi/hslf/record/TestExOleObjStg.java | 77 +-- .../poi/hslf/record/TestRecordContainer.java | 61 +- .../poi/hwpf/extractor/TestWordExtractor.java | 2 + .../hwpf/extractor/TestWordExtractorBugs.java | 25 +- .../apache/poi/hwpf/usermodel/TestBugs.java | 125 ++-- .../apache/poi/hwpf/usermodel/TestRange.java | 27 +- .../poi/hwpf/usermodel/TestTableRow.java | 33 +- .../poi/hssf/usermodel/TestFormulas.java | 299 +++++---- .../hssf/usermodel/TestPOIFSProperties.java | 18 +- .../poi/poifs/crypt/TestXorEncryption.java | 11 +- .../poi/poifs/filesystem/TestEntryUtils.java | 31 +- .../filesystem/TestNPOIFSFileSystem.java | 582 +++++++++--------- 13 files changed, 746 insertions(+), 589 deletions(-) diff --git a/src/ooxml/testcases/org/apache/poi/xdgf/extractor/TestXDGFVisioExtractor.java b/src/ooxml/testcases/org/apache/poi/xdgf/extractor/TestXDGFVisioExtractor.java index 7603ab7efd..4989268f7e 100644 --- a/src/ooxml/testcases/org/apache/poi/xdgf/extractor/TestXDGFVisioExtractor.java +++ b/src/ooxml/testcases/org/apache/poi/xdgf/extractor/TestXDGFVisioExtractor.java @@ -16,28 +16,38 @@ ==================================================================== */ package org.apache.poi.xdgf.extractor; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + import java.io.IOException; +import java.io.InputStream; import org.apache.poi.POIDataSamples; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xdgf.usermodel.XmlVisioDocument; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; -import junit.framework.TestCase; +public class TestXDGFVisioExtractor { -public class TestXDGFVisioExtractor extends TestCase { - - private POIDataSamples diagrams; + private static final POIDataSamples SAMPLES = POIDataSamples.getDiagramInstance(); private OPCPackage pkg; private XmlVisioDocument xml; - @Override - protected void setUp() throws Exception { - diagrams = POIDataSamples.getDiagramInstance(); - - pkg = OPCPackage.open(diagrams.openResourceAsStream("test_text_extraction.vsdx")); + @Before + public void setUp() throws Exception { + pkg = OPCPackage.open(SAMPLES.openResourceAsStream("test_text_extraction.vsdx")); xml = new XmlVisioDocument(pkg); } + + @After + public void closeResoures() throws IOException { + xml.close(); + pkg.close(); + } + @Test public void testGetSimpleText() throws IOException { new XDGFVisioExtractor(xml).close(); new XDGFVisioExtractor(pkg).close(); @@ -46,10 +56,8 @@ public class TestXDGFVisioExtractor extends TestCase { extractor.getText(); String text = extractor.getText(); - assertTrue(text.length() > 0); - - assertEquals("Text here\nText there\nText, text, everywhere!\nRouter here\n", - text); + String expected = "Text here\nText there\nText, text, everywhere!\nRouter here\n"; + assertEquals(expected, text); extractor.close(); } @@ -57,13 +65,13 @@ public class TestXDGFVisioExtractor extends TestCase { //the point of this is to trigger the addition of //some common visio classes -- ConnectsType - public void testVisioConnects() throws Exception { - - XmlVisioDocument document = - new XmlVisioDocument(diagrams. - openResourceAsStream("60489.vsdx")); + public void testVisioConnects() throws IOException { + InputStream is = SAMPLES.openResourceAsStream("60489.vsdx"); + XmlVisioDocument document = new XmlVisioDocument(is); + is.close(); XDGFVisioExtractor extractor = new XDGFVisioExtractor(document); String text = extractor.getText(); assertTrue(text.indexOf("Arrears") > -1); + extractor.close(); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExOleObjStg.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExOleObjStg.java index 07147f1fe1..c38b215e8a 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExOleObjStg.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestExOleObjStg.java @@ -19,73 +19,41 @@ package org.apache.poi.hslf.record; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; -import junit.framework.TestCase; - import org.apache.poi.poifs.filesystem.DocumentEntry; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.junit.BeforeClass; +import org.junit.Test; /** * Tests that {@link ExOleObjStg} works properly - * - * @author Yegor Kozlov */ -public final class TestExOleObjStg extends TestCase { +public final class TestExOleObjStg { // From a real file (embedded SWF control) - /* - - 00 0E 00 00 78 9C BB 70 5E F0 C1 C2 8D 52 0F 19 D0 80 1D 03 33 C3 BF FF 9C - 0C 6C 48 62 8C 40 CC 04 E3 08 30 30 B0 40 C5 FE FD FF FF 1F 24 C4 0C C4 FF - 47 C1 90 02 41 0C F9 40 58 C2 A0 C0 E0 CA 90 07 A4 8B 18 2A D1 93 02 5E 20 - C6 C0 0A 8F 73 50 5A C8 BB 5D 73 29 77 DD 79 C1 69 3B 5C 5C 83 43 50 D5 06 - BC 48 2F 2B 66 38 C9 C8 0E 64 3B 30 42 C4 9C 81 B6 83 EC 4D 05 93 C5 24 D9 - 0D 02 42 0C 4C 8C C8 FE 21 56 9F 02 23 C9 56 E1 04 E4 D8 4F 4D 40 89 FD A0 - BC FB 17 4B BA F8 07 C5 A3 60 78 03 7A E6 FF 09 67 59 1B 41 F9 9F 95 61 34 - FF 53 13 50 62 3F 4C 1F AC 1C 18 CD F7 23 0B C0 DA 74 A0 B6 1B A8 3D 37 1A - F7 23 0B A4 87 A6 85 0A 00 1B 64 6F 38 21 98 03 DA C2 E7 60 90 01 92 69 0C - 39 0C 65 0C 05 40 32 11 58 2F A4 02 6B 07 3D 60 19 5D 0E 14 27 4E 05 1F 90 - 0C 67 C8 04 96 ED 29 C0 72 BE 1C C8 E3 06 E3 FF FF 39 18 B8 80 2C 0F A0 5C - 3A 43 06 58 2D A8 A7 E1 C3 10 02 97 87 B8 02 E6 1A 60 77 83 21 18 A8 12 64 - 8A 23 D0 B6 1C B8 59 C8 AA 90 F5 F0 62 94 75 DC C0 DE 0A 37 5C 1D 33 54 35 - 88 97 08 35 91 83 81 07 EC 27 10 BF 18 E8 9B E1 0F 00 BD 65 3D D4 - - */ - private final byte[] data = new byte[] { - 0x10, 0x00, 0x11, 0x10, 0x5B, 0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x78, (byte)0x9C, (byte)0xBB, 0x70, - 0x5E, (byte)0xF0, (byte)0xC1, (byte)0xC2, (byte)0x8D, 0x52, 0x0F, 0x19, (byte)0xD0, (byte)0x80, 0x1D, 0x03, - 0x33, (byte)0xC3, (byte)0xBF, (byte)0xFF, (byte)0x9C, 0x0C, 0x6C, 0x48, 0x62, (byte)0x8C, 0x40, (byte)0xCC, - 0x04, (byte)0xE3, 0x08, 0x30, 0x30, (byte)0xB0, 0x40, (byte)0xC5, (byte)0xFE, (byte)0xFD, (byte)0xFF, (byte)0xFF, - 0x1F, 0x24, (byte)0xC4, (byte)0x0C, (byte)0xC4, (byte)0xFF, 0x47, (byte)0xC1, (byte)0x90, 0x02, 0x41, 0x0C, - (byte)0xF9, 0x40, 0x58, (byte)0xC2, (byte)0xA0, (byte)0xC0, (byte)0xE0, (byte)0xCA, (byte)0x90, 0x07, (byte)0xA4, - (byte)0x8B, 0x18, 0x2A, (byte)0xD1, (byte)0x93, 0x02, 0x5E, 0x20, (byte)0xC6, (byte)0xC0, 0x0A, (byte)0x8F, - 0x73, 0x50, 0x5A, (byte)0xC8, (byte)0xBB, 0x5D, 0x73, 0x29, 0x77, (byte)0xDD, 0x79, (byte)0xC1, 0x69, 0x3B, - 0x5C, 0x5C, (byte)0x83, 0x43, 0x50, (byte)0xD5, 0x06, (byte)0xBC, 0x48, 0x2F, 0x2B, 0x66, 0x38, (byte)0xC9, - (byte)0xC8, 0x0E, 0x64, 0x3B, 0x30, 0x42, (byte)0xC4, (byte)0x9C, (byte)0x81, (byte)0xB6, (byte)0x83, (byte)0xEC, - 0x4D, 0x05, (byte)0x93, (byte)0xC5, 0x24, (byte)0xD9, 0x0D, 0x02, 0x42, 0x0C, 0x4C, (byte)0x8C, (byte)0xC8, - (byte)0xFE, 0x21, 0x56, (byte)0x9F, 0x02, 0x23, (byte)0xC9, 0x56, (byte)0xE1, 0x04, (byte)0xE4, (byte)0xD8, - 0x4F, 0x4D, 0x40, (byte)0x89, (byte)0xFD, (byte)0xA0, (byte)0xBC, (byte)0xFB, 0x17, 0x4B, (byte)0xBA, (byte)0xF8, - 0x07, (byte)0xC5, (byte)0xA3, 0x60, 0x78, 0x03, 0x7A, (byte)0xE6, (byte)0xFF, 0x09, 0x67, 0x59, 0x1B, 0x41, - (byte)0xF9, (byte)0x9F, (byte)0x95, 0x61, 0x34, (byte)0xFF, 0x53, 0x13, 0x50, 0x62, 0x3F, 0x4C, 0x1F, (byte)0xAC, - 0x1C, 0x18, (byte)0xCD, (byte)0xF7, 0x23, 0x0B, (byte)0xC0, (byte)0xDA, 0x74, (byte)0xA0, (byte)0xB6, 0x1B, - (byte)0xA8, 0x3D, 0x37, 0x1A, (byte)0xF7, 0x23, 0x0B, (byte)0xA4, (byte)0x87, (byte)0xA6, (byte)0x85, 0x0A, - 0x00, 0x1B, 0x64, 0x6F, 0x38, 0x21, (byte)0x98, 0x03, (byte)0xDA, (byte)0xC2, (byte)0xE7, 0x60, (byte)0x90, - 0x01, (byte)0x92, 0x69, 0x0C, 0x39, 0x0C, 0x65, 0x0C, 0x05, 0x40, 0x32, 0x11, 0x58, 0x2F, (byte)0xA4, 0x02, - 0x6B, 0x07, 0x3D, 0x60, 0x19, 0x5D, 0x0E, 0x14, 0x27, 0x4E, 0x05, 0x1F, (byte)0x90, 0x0C, 0x67, (byte)0xC8, - 0x04, (byte)0x96, (byte)0xED, 0x29, (byte)0xC0, 0x72, (byte)0xBE, 0x1C, (byte)0xC8, (byte)0xE3, 0x06, (byte)0xE3, - (byte)0xFF, (byte)0xFF, 0x39, 0x18, (byte)0xB8, (byte)0x80, 0x2C, 0x0F, (byte)0xA0, 0x5C, 0x3A, 0x43, 0x06, 0x58, - 0x2D, (byte)0xA8, (byte)0xA7, (byte)0xE1, (byte)0xC3, 0x10, 0x02, (byte)0x97, (byte)0x87, (byte)0xB8, 0x02, - (byte)0xE6, 0x1A, 0x60, 0x77, (byte)0x83, 0x21, 0x18, (byte)0xA8, 0x12, 0x64, (byte)0x8A, 0x23, (byte)0xD0, - (byte)0xB6, 0x1C, (byte)0xB8, 0x59, (byte)0xC8, (byte)0xAA, (byte)0x90, (byte)0xF5, (byte)0xF0, 0x62, (byte)0x94, - 0x75, (byte)0xDC, (byte)0xC0, (byte)0xDE, 0x0A, 0x37, 0x5C, 0x1D, 0x33, 0x54, 0x35, (byte)0x88, (byte)0x97, 0x08, - 0x35, (byte)0x91, (byte)0x83, (byte)0x81, 0x07, (byte)0xEC, 0x27, 0x10, (byte)0xBF, 0x18, (byte)0xE8, (byte)0x9B, - (byte)0xE1, 0x0F, 0x00, (byte)0xBD, 0x65, 0x3D, (byte)0xD4 - }; + // .... + private static byte[] data; + + @BeforeClass + public static void init() throws IOException { + data = org.apache.poi.poifs.storage.RawDataUtil.decompress( + "H4sIAAAAAAAAAAFjAZz+EAAREFsBAAAADgAAeJy7cF7wwcKNUg8Z0IAdAzPDv/+cDGxIYoxAzATjCDAwsEDF/"+ + "v3//x8kxAzE/0fBkAJBDPlAWMKgwODKkAekixgq0ZMCXiDGwAqPc1BayLtdcyl33XnBaTtcXINDUNUGvEgvK2"+ + "Y4ycgOZDswQsScgbaD7E0Fk8Uk2Q0CQgxMjMj+IVafAiPJVuEE5NhPTUCJ/aC8+xdLuvgHxaNgeAN65v8JZ1k"+ + "bQfmflWE0/1MTUGI/TB+sHBjN9yMLwNp0oLYbqD03GvcjC6SHpoUKABtkbzghmAPawudgkAGSaQw5DGUMBUAy"+ + "EVgvpAJrBz1gGV0OFCdOBR+QDGfIBJbtKcByvhzI4wbj//85GLiALA+gXDpDBlgtqKfhwxACl4e4AuYaYHeDI"+ + "RioEmSKI9C2HLhZyKqQ9fBilHXcwN4KN1wdM1Q1iJcINZGDgQfsJxC/GOib4Q8AvWU91AJ49g1jAQAA" + ); + } + @Test public void testRead() throws Exception { ExOleObjStg record = new ExOleObjStg(data, 0, data.length); assertEquals(RecordTypes.ExOleObjStg.typeID, record.getRecordType()); @@ -99,8 +67,10 @@ public final class TestExOleObjStg extends TestCase { DocumentEntry doc = (DocumentEntry)fs.getRoot().getEntry("Contents"); assertNotNull(doc); assertTrue("Fetched the Contents stream containing OLE properties", true); + fs.close(); } + @Test public void testWrite() throws Exception { ExOleObjStg record = new ExOleObjStg(data, 0, data.length); ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -110,6 +80,7 @@ public final class TestExOleObjStg extends TestCase { assertArrayEquals(data, b); } + @Test public void testNewRecord() throws Exception { ExOleObjStg src = new ExOleObjStg(data, 0, data.length); byte[] oledata = readAll(src.getData()); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestRecordContainer.java b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestRecordContainer.java index 2679e320bd..27956dd3d2 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/record/TestRecordContainer.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/record/TestRecordContainer.java @@ -18,23 +18,54 @@ package org.apache.poi.hslf.record; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertSame; + +import java.io.IOException; +import java.io.InputStream; -import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl; import org.apache.poi.POIDataSamples; +import org.apache.poi.hslf.usermodel.HSLFSlideShowImpl; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; /** * Tests that the helper methods on RecordContainer work properly - * - * @author Nick Burch (nick at torchbox dot com) */ -public final class TestRecordContainer extends TestCase { +public final class TestRecordContainer { + private HSLFSlideShowImpl hss; private RecordContainer recordContainer; + private static final POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); + @Before + public void setUp() throws IOException { + // Find a real RecordContainer record + InputStream is = slTests.openResourceAsStream("basic_test_ppt_file.ppt"); + hss = new HSLFSlideShowImpl(is); + is.close(); + + Record[] r = hss.getRecords(); + for (Record rec : r) { + if(rec instanceof RecordContainer) { + recordContainer = (RecordContainer)rec; + return; + } + } + } + + @After + public void closeResources() throws IOException { + hss.close(); + } + + @Test public void testIsAnAtom() { assertFalse( recordContainer.isAnAtom() ); } + @Test public void testAppendChildRecord() { // Grab records for testing with Record r = recordContainer.getChildRecords()[0]; @@ -68,6 +99,7 @@ public final class TestRecordContainer extends TestCase { assertEquals(r, nrs[3]); } + @Test public void testAddChildAfter() { // Working with new StyleTextPropAtom Record newRecord = new StyleTextPropAtom(0); @@ -97,6 +129,7 @@ public final class TestRecordContainer extends TestCase { assertEquals(newRecord, ncr[cr.length]); } + @Test public void testAddChildBefore() { // Working with new StyleTextPropAtom Record newRecord = new StyleTextPropAtom(0); @@ -137,27 +170,11 @@ public final class TestRecordContainer extends TestCase { assertEquals(before, ncr[1]); } + @Test public void testRemove() { Record[] ch = recordContainer.getChildRecords(); Record removeRecord = recordContainer.removeChild(ch[0]); assertSame(ch[0], removeRecord); assertEquals(ch.length-1, recordContainer.getChildRecords().length); } - - @Override - protected void setUp() throws Exception { - super.setUp(); - - // Find a real RecordContainer record - POIDataSamples slTests = POIDataSamples.getSlideShowInstance(); - HSLFSlideShowImpl hss = new HSLFSlideShowImpl(slTests.openResourceAsStream("basic_test_ppt_file.ppt")); - - Record[] r = hss.getRecords(); - for (Record rec : r) { - if(rec instanceof RecordContainer) { - recordContainer = (RecordContainer)rec; - return; - } - } - } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java index eb621cb9b2..f13daf326d 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractor.java @@ -349,8 +349,10 @@ public final class TestWordExtractor { // Open directly for(DirectoryNode dir : files) { + @SuppressWarnings("resource") WordExtractor extractor = new WordExtractor(dir); assertEqualsTrim(p_text1_block, extractor.getText()); + // extractor.close(); } // Open via a HWPFDocument diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java index f236b96741..fc1011470f 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/extractor/TestWordExtractorBugs.java @@ -17,32 +17,39 @@ package org.apache.poi.hwpf.extractor; -import junit.framework.TestCase; +import java.io.IOException; +import java.io.InputStream; import org.apache.poi.POIDataSamples; +import org.junit.Test; /** * Tests for bugs with the WordExtractor - * - * @author Nick Burch (nick at torchbox dot com) */ -public final class TestWordExtractorBugs extends TestCase { +public final class TestWordExtractorBugs { + private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance(); - public void testProblemMetadata() throws Exception { - WordExtractor extractor = - new WordExtractor(POIDataSamples.getDocumentInstance().openResourceAsStream("ProblemExtracting.doc")); + @Test + public void testProblemMetadata() throws IOException { + InputStream is = SAMPLES.openResourceAsStream("ProblemExtracting.doc"); + WordExtractor extractor = new WordExtractor(is); + is.close(); // Check it gives text without error extractor.getText(); extractor.getParagraphText(); extractor.getTextFromPieces(); + extractor.close(); } + @Test public void testBug50688() throws Exception { - WordExtractor extractor = - new WordExtractor(POIDataSamples.getDocumentInstance().openResourceAsStream("parentinvguid.doc")); + InputStream is = SAMPLES.openResourceAsStream("parentinvguid.doc"); + WordExtractor extractor = new WordExtractor(is); + is.close(); // Check it gives text without error extractor.getText(); + extractor.close(); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java index efa219beb5..7a721657df 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestBugs.java @@ -16,7 +16,19 @@ ==================================================================== */ package org.apache.poi.hwpf.usermodel; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + import org.apache.commons.codec.digest.DigestUtils; import org.apache.poi.POIDataSamples; import org.apache.poi.hwpf.HWPFDocument; @@ -36,23 +48,16 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.IOUtils; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; +import org.junit.Test; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; +import junit.framework.TestCase; /** * Test different problems reported in the Apache Bugzilla * against HWPF */ -public class TestBugs extends TestCase -{ - private static final POILogger logger = POILogFactory - .getLogger(TestBugs.class); +public class TestBugs{ + private static final POILogger logger = POILogFactory.getLogger(TestBugs.class); public static void assertEqualsIgnoreNewline(String expected, String actual ) { @@ -98,15 +103,6 @@ public class TestBugs extends TestCase } } - private static void fixed(String bugzillaId ) - { - throw new Error( - "Bug " - + bugzillaId - + " seems to be fixed. " - + "Please resolve the issue in Bugzilla and remove fail() from the test"); - } - private String getText(String samplefile) throws IOException { HWPFDocument doc = HWPFTestDataSamples.openSampleFile(samplefile); WordExtractor extractor = new WordExtractor(doc); @@ -114,6 +110,7 @@ public class TestBugs extends TestCase return extractor.getText(); } finally { extractor.close(); + doc.close(); } } @@ -124,12 +121,14 @@ public class TestBugs extends TestCase return extractor.getText(); } finally { extractor.close(); + doc.close(); } } /** * Bug 33519 - HWPF fails to read a file */ + @Test public void test33519() throws IOException { assertNotNull(getText("Bug33519.doc")); @@ -138,6 +137,7 @@ public class TestBugs extends TestCase /** * Bug 34898 - WordExtractor doesn't read the whole string from the file */ + @Test public void test34898() throws IOException { assertEqualsIgnoreNewline("\u30c7\u30a3\u30ec\u30af\u30c8\u30ea", getText("Bug34898.doc").trim()); @@ -146,8 +146,8 @@ public class TestBugs extends TestCase /** * [RESOLVED INVALID] 41898 - Word 2003 pictures cannot be extracted */ - public void test41898() - { + @Test + public void test41898() throws IOException { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug41898.doc"); List pics = doc.getPicturesTable().getAllPictures(); @@ -173,12 +173,14 @@ public class TestBugs extends TestCase OfficeDrawing officeDrawing = officeDrawings.iterator().next(); assertNotNull(officeDrawing); assertEquals(1044, officeDrawing.getShapeId()); + doc.close(); } /** * Bug 44331 - HWPFDocument.write destroys fields */ @SuppressWarnings("deprecation") + @Test public void test44431() throws IOException { HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug44431.doc"); @@ -200,12 +202,14 @@ public class TestBugs extends TestCase } } finally { extractor1.close(); + doc1.close(); } } /** * Bug 44331 - HWPFDocument.write destroys fields */ + @Test public void test44431_2() throws IOException { assertEqualsIgnoreNewline("File name=FieldsTest.doc\n" + @@ -233,6 +237,7 @@ public class TestBugs extends TestCase /** * Bug 45473 - HWPF cannot read file after save */ + @Test public void test45473() throws IOException { // Fetch the current text @@ -243,6 +248,7 @@ public class TestBugs extends TestCase text1 = wordExtractor.getText().trim(); } finally { wordExtractor.close(); + doc1.close(); } // Re-load, then re-save and re-check @@ -254,6 +260,7 @@ public class TestBugs extends TestCase text2 = wordExtractor2.getText().trim(); } finally { wordExtractor2.close(); + doc1.close(); } // the text in the saved document has some differences in line @@ -264,8 +271,8 @@ public class TestBugs extends TestCase /** * Bug 46220 - images are not properly extracted */ - public void test46220() - { + @Test + public void test46220() throws IOException { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug46220.doc"); // reference checksums as in Bugzilla String[] md5 = { "851be142bce6d01848e730cb6903f39e", @@ -281,12 +288,14 @@ public class TestBugs extends TestCase // use Apache Commons Codec utils to compute md5 assertEqualsIgnoreNewline(md5[i], DigestUtils.md5Hex(data)); } + doc.close(); } /** * [RESOLVED FIXED] Bug 46817 - Regression: Text from some table cells * missing */ + @Test public void test46817() throws IOException { String text = getText("Bug46817.doc").trim(); @@ -299,9 +308,9 @@ public class TestBugs extends TestCase /** * [FAILING] Bug 47286 - Word documents saves in wrong format if source * contains form elements - * */ @SuppressWarnings("deprecation") + @Test public void test47286() throws IOException { // Fetch the current text @@ -312,6 +321,7 @@ public class TestBugs extends TestCase text1 = wordExtractor.getText().trim(); } finally { wordExtractor.close(); + doc1.close(); } // Re-load, then re-save and re-check @@ -323,6 +333,7 @@ public class TestBugs extends TestCase text2 = wordExtractor2.getText().trim(); } finally { wordExtractor2.close(); + doc1.close(); } // the text in the saved document has some differences in line @@ -345,6 +356,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 47287 - StringIndexOutOfBoundsException in * CharacterRun.replaceText() */ + @Test public void test47287() { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug47287.doc"); @@ -420,6 +432,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 47731 - Word Extractor considers text copied from * some website as an embedded object */ + @Test public void test47731() throws Exception { String foundText = getText("Bug47731.doc"); @@ -431,6 +444,7 @@ public class TestBugs extends TestCase /** * Bug 4774 - text extracted by WordExtractor is broken */ + @Test public void test47742() throws Exception { // (1) extract text from MS Word document via POI @@ -454,6 +468,7 @@ public class TestBugs extends TestCase /** * Bug 47958 - Exception during Escher walk of pictures */ + @Test public void test47958() { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug47958.doc"); @@ -464,6 +479,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 48065 - Problems with save output of HWPF (losing * formatting) */ + @Test public void test48065() { HWPFDocument doc1 = HWPFTestDataSamples.openSampleFile("Bug48065.doc"); @@ -479,6 +495,7 @@ public class TestBugs extends TestCase assertTableStructures(expected, actual); } + @Test public void test49933() throws IOException { String text = getTextOldFile("Bug49933.doc"); @@ -489,6 +506,7 @@ public class TestBugs extends TestCase /** * Bug 50936 - Exception parsing MS Word 8.0 file */ + @Test public void test50936_1() { HWPFDocument hwpfDocument = HWPFTestDataSamples @@ -499,6 +517,7 @@ public class TestBugs extends TestCase /** * Bug 50936 - Exception parsing MS Word 8.0 file */ + @Test public void test50936_2() { HWPFDocument hwpfDocument = HWPFTestDataSamples @@ -509,6 +528,7 @@ public class TestBugs extends TestCase /** * Bug 50936 - Exception parsing MS Word 8.0 file */ + @Test public void test50936_3() { HWPFDocument hwpfDocument = HWPFTestDataSamples @@ -519,21 +539,16 @@ public class TestBugs extends TestCase /** * [FAILING] Bug 50955 - error while retrieving the text file */ - public void test50955() throws IOException - { - try { - getTextOldFile("Bug50955.doc"); - - fixed("50955"); - } catch (IllegalStateException e) { - // expected here - } + @Test(expected=IllegalStateException.class) + public void test50955() throws IOException { + getTextOldFile("Bug50955.doc"); } /** * [RESOLVED FIXED] Bug 51604 - replace text fails for doc (poi 3.8 beta * release from download site ) */ + @Test public void test51604() { HWPFDocument document = HWPFTestDataSamples @@ -563,6 +578,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 51604 - replace text fails for doc (poi 3.8 beta * release from download site ) */ + @Test public void test51604p2() throws Exception { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug51604.doc"); @@ -596,8 +612,9 @@ public class TestBugs extends TestCase { CharacterRun charRun = paragraph.getCharacterRun(j); String text = charRun.text(); - if (text.contains("Header" ) ) + if (text.contains("Header" ) ) { charRun.replaceText(text, "added"); + } } } } @@ -606,6 +623,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 51604 - replace text fails for doc (poi 3.8 beta * release from download site ) */ + @Test public void test51604p3() throws Exception { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug51604.doc"); @@ -639,6 +657,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 51671 - HWPFDocument.write based on NPOIFSFileSystem * throws a NullPointerException */ + @Test public void test51671() throws Exception { InputStream is = POIDataSamples.getDocumentInstance() @@ -648,6 +667,7 @@ public class TestBugs extends TestCase HWPFDocument hwpfDocument = new HWPFDocument( npoifsFileSystem.getRoot()); hwpfDocument.write(new ByteArrayOutputStream()); + hwpfDocument.close(); } finally { npoifsFileSystem.close(); } @@ -657,6 +677,7 @@ public class TestBugs extends TestCase * Bug 51678 - Extracting text from Bug51524.zip is slow Bug 51524 - * PapBinTable constructor is slow */ + @Test public void test51678And51524() throws IOException { // YK: the test will run only if the poi.test.remote system property is @@ -681,6 +702,7 @@ public class TestBugs extends TestCase * [FIXED] Bug 51902 - Picture.fillRawImageContent - * ArrayIndexOutOfBoundsException */ + @Test public void testBug51890() { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("Bug51890.doc"); @@ -697,6 +719,7 @@ public class TestBugs extends TestCase * [RESOLVED FIXED] Bug 51834 - Opening and Writing .doc file results in * corrupt document */ + @Test public void testBug51834() throws Exception { /* @@ -711,6 +734,7 @@ public class TestBugs extends TestCase /** * Bug 51944 - PAPFormattedDiskPage.getPAPX - IndexOutOfBounds */ + @Test public void testBug51944() throws Exception { HWPFOldDocument doc = HWPFTestDataSamples.openOldSampleFile("Bug51944.doc"); @@ -721,6 +745,7 @@ public class TestBugs extends TestCase * Bug 52032 - [BUG] & [partial-PATCH] HWPF - ArrayIndexOutofBoundsException * with no stack trace (broken after revision 1178063) */ + @Test public void testBug52032_1() throws Exception { assertNotNull(getText("Bug52032_1.doc")); @@ -730,6 +755,7 @@ public class TestBugs extends TestCase * Bug 52032 - [BUG] & [partial-PATCH] HWPF - ArrayIndexOutofBoundsException * with no stack trace (broken after revision 1178063) */ + @Test public void testBug52032_2() throws Exception { assertNotNull(getText("Bug52032_2.doc")); @@ -739,6 +765,7 @@ public class TestBugs extends TestCase * Bug 52032 - [BUG] & [partial-PATCH] HWPF - ArrayIndexOutofBoundsException * with no stack trace (broken after revision 1178063) */ + @Test public void testBug52032_3() throws Exception { assertNotNull(getText("Bug52032_3.doc")); @@ -747,6 +774,7 @@ public class TestBugs extends TestCase /** * Bug 53380 - ArrayIndexOutOfBounds Exception parsing word 97 document */ + @Test public void testBug53380_1() throws Exception { assertNotNull(getText("Bug53380_1.doc")); @@ -755,6 +783,7 @@ public class TestBugs extends TestCase /** * Bug 53380 - ArrayIndexOutOfBounds Exception parsing word 97 document */ + @Test public void testBug53380_2() throws Exception { assertNotNull(getText("Bug53380_2.doc")); @@ -763,6 +792,7 @@ public class TestBugs extends TestCase /** * Bug 53380 - ArrayIndexOutOfBounds Exception parsing word 97 document */ + @Test public void testBug53380_3() throws Exception { assertNotNull(getText("Bug53380_3.doc")); @@ -771,6 +801,7 @@ public class TestBugs extends TestCase /** * Bug 53380 - ArrayIndexOutOfBounds Exception parsing word 97 document */ + @Test public void testBug53380_4() throws Exception { assertNotNull(getText("Bug53380_4.doc")); @@ -782,6 +813,7 @@ public class TestBugs extends TestCase * * Disabled pending a fix for the bug */ + @Test public void test56880() throws Exception { HWPFDocument doc = HWPFTestDataSamples.openSampleFile("56880.doc"); @@ -802,6 +834,7 @@ public class TestBugs extends TestCase private int section2BottomMargin = 1440; private final int section2NumColumns = 3; + @Test @SuppressWarnings("SuspiciousNameCombination") public void testHWPFSections() { HWPFDocument document = HWPFTestDataSamples.openSampleFile("Bug53453Section.doc"); @@ -875,19 +908,16 @@ public class TestBugs extends TestCase assertNotNull(hwpfDocument); } + @Test(expected=ArrayIndexOutOfBoundsException.class) public void test57603SevenRowTable() throws Exception { - try { - HWPFDocument hwpfDocument = HWPFTestDataSamples.openSampleFile("57603-seven_columns.doc"); - HWPFDocument hwpfDocument2 = HWPFTestDataSamples.writeOutAndReadBack(hwpfDocument); - assertNotNull(hwpfDocument2); - hwpfDocument2.close(); - hwpfDocument.close(); - fixed("57603"); - } catch (ArrayIndexOutOfBoundsException e) { - // expected until this bug is fixed - } + HWPFDocument hwpfDocument = HWPFTestDataSamples.openSampleFile("57603-seven_columns.doc"); + HWPFDocument hwpfDocument2 = HWPFTestDataSamples.writeOutAndReadBack(hwpfDocument); + assertNotNull(hwpfDocument2); + hwpfDocument2.close(); + hwpfDocument.close(); } + @Test(expected=ArrayIndexOutOfBoundsException.class) public void test57843() throws IOException { File f = POIDataSamples.getDocumentInstance().getFile("57843.doc"); POIFSFileSystem fs = new POIFSFileSystem(f, true); @@ -895,9 +925,6 @@ public class TestBugs extends TestCase HWPFOldDocument doc = new HWPFOldDocument(fs); assertNotNull(doc); doc.close(); - fixed("57843"); - } catch (ArrayIndexOutOfBoundsException e) { - // expected until this bug is fixed } finally { fs.close(); } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java index a7eabe56a8..2fa5aa292b 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestRange.java @@ -17,22 +17,27 @@ package org.apache.poi.hwpf.usermodel; -import java.util.List; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; -import junit.framework.TestCase; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; import org.apache.poi.POIDataSamples; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.model.SEPX; +import org.junit.Test; /** * Tests for Range which aren't around deletion, insertion, text replacement or * textual contents */ -public final class TestRange extends TestCase -{ - public void testFieldStripping() - { +public final class TestRange { + private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance(); + + @Test + public void testFieldStripping() { String exp = "This is some text."; String single = "This is some \u0013Blah!\u0015text."; @@ -57,10 +62,11 @@ public final class TestRange extends TestCase assertEquals( odd2, Range.stripFields( odd2 ) ); } - public void testBug46817() throws Exception - { - HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples - .getDocumentInstance().openResourceAsStream( "Bug46817.doc" ) ); + @Test + public void testBug46817() throws IOException { + InputStream is = SAMPLES.openResourceAsStream( "Bug46817.doc" ); + HWPFDocument hwpfDocument = new HWPFDocument( is ); + is.close(); final List sections = hwpfDocument.getSectionTable() .getSections(); @@ -85,5 +91,6 @@ public final class TestRange extends TestCase Paragraph lastInMainSection = section.getParagraph( section .numParagraphs() - 1); assertTrue( lastInMainSection.getEndOffset() <= 766 ); + hwpfDocument.close(); } } diff --git a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestTableRow.java b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestTableRow.java index e08aea4127..9c1127a12c 100644 --- a/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestTableRow.java +++ b/src/scratchpad/testcases/org/apache/poi/hwpf/usermodel/TestTableRow.java @@ -16,16 +16,23 @@ ==================================================================== */ package org.apache.poi.hwpf.usermodel; -import junit.framework.TestCase; +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.io.InputStream; + import org.apache.poi.POIDataSamples; import org.apache.poi.hwpf.HWPFDocument; +import org.junit.Test; -public class TestTableRow extends TestCase -{ - public void testInnerTableCellsDetection() throws Exception - { - HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples - .getDocumentInstance().openResourceAsStream( "innertable.doc" ) ); +public class TestTableRow { + private static final POIDataSamples SAMPLES = POIDataSamples.getDocumentInstance(); + + @Test + public void testInnerTableCellsDetection() throws IOException { + InputStream is = SAMPLES.openResourceAsStream( "innertable.doc" ); + HWPFDocument hwpfDocument = new HWPFDocument( is ); + is.close(); hwpfDocument.getRange(); Range documentRange = hwpfDocument.getRange(); @@ -36,12 +43,14 @@ public class TestTableRow extends TestCase TableRow tableRow = innerTable.getRow( 0 ); assertEquals( 2, tableRow.numCells() ); + hwpfDocument.close(); } - public void testOuterTableCellsDetection() throws Exception - { - HWPFDocument hwpfDocument = new HWPFDocument( POIDataSamples - .getDocumentInstance().openResourceAsStream( "innertable.doc" ) ); + @Test + public void testOuterTableCellsDetection() throws IOException { + InputStream is = SAMPLES.openResourceAsStream( "innertable.doc" ); + HWPFDocument hwpfDocument = new HWPFDocument( is ); + is.close(); hwpfDocument.getRange(); Range documentRange = hwpfDocument.getRange(); @@ -53,6 +62,8 @@ public class TestTableRow extends TestCase assertEquals( 3, outerTable.getRow( 0 ).numCells() ); assertEquals( 3, outerTable.getRow( 1 ).numCells() ); assertEquals( 3, outerTable.getRow( 2 ).numCells() ); + + hwpfDocument.close(); } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java index e2a992710b..73d0de5828 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestFormulas.java @@ -17,29 +17,28 @@ package org.apache.poi.hssf.usermodel; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.Date; -import junit.framework.TestCase; - import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.ss.formula.ptg.Ptg; -import org.apache.poi.ss.formula.ptg.NamePtg; import org.apache.poi.hssf.util.CellReference; -import org.apache.poi.util.TempFile; import org.apache.poi.ss.formula.FormulaType; +import org.apache.poi.ss.formula.ptg.NamePtg; +import org.apache.poi.ss.formula.ptg.Ptg; +import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Name; import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.util.TempFile; +import org.junit.Test; -/** - * @author Andrew C. Oliver (acoliver at apache dot org) - * @author Avik Sengupta - */ -public final class TestFormulas extends TestCase { +public final class TestFormulas { private static HSSFWorkbook openSample(String sampleFileName) { return HSSFTestDataSamples.openSampleWorkbook(sampleFileName); @@ -48,10 +47,11 @@ public final class TestFormulas extends TestCase { /** * Add 1+1 -- WHoohoo! */ - public void testBasicAddIntegers() { + @Test + public void testBasicAddIntegers() throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -60,78 +60,90 @@ public final class TestFormulas extends TestCase { c = r.createCell(1); c.setCellFormula(1 + "+" + 1); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); r = s.getRow(1); c = r.getCell(1); assertTrue("Formula is as expected",("1+1".equals(c.getCellFormula()))); + wb2.close(); } /** * Add various integers */ - public void testAddIntegers() { + @Test + public void testAddIntegers() throws IOException { binomialOperator("+"); } /** * Multiply various integers */ - public void testMultplyIntegers() { + @Test + public void testMultplyIntegers() throws IOException { binomialOperator("*"); } /** * Subtract various integers */ - public void testSubtractIntegers() { + @Test + public void testSubtractIntegers() throws IOException { binomialOperator("-"); } /** * Subtract various integers */ - public void testDivideIntegers() { + @Test + public void testDivideIntegers() throws IOException { binomialOperator("/"); } /** * Exponentialize various integers; */ - public void testPowerIntegers() { + @Test + public void testPowerIntegers() throws IOException { binomialOperator("^"); } /** * Concatenate two numbers 1&2 = 12 */ - public void testConcatIntegers() { + @Test + public void testConcatIntegers() throws IOException { binomialOperator("&"); } /** * tests 1*2+3*4 */ - public void testOrderOfOperationsMultiply() { + @Test + public void testOrderOfOperationsMultiply() throws IOException { orderTest("1*2+3*4"); } /** * tests 1*2+3^4 */ - public void testOrderOfOperationsPower() { + @Test + public void testOrderOfOperationsPower() throws IOException { orderTest("1*2+3^4"); } /** * Tests that parenthesis are obeyed */ - public void testParenthesis() { + @Test + public void testParenthesis() throws IOException { orderTest("(1*3)+2+(1+2)*(3^4)^5"); } - public void testReferencesOpr() { + @Test + public void testReferencesOpr() throws IOException { String[] operation = new String[] { "+", "-", "*", "/", "^", "&" }; @@ -144,14 +156,15 @@ public final class TestFormulas extends TestCase { * Tests creating a file with floating point in a formula. * */ - public void testFloat() { + @Test + public void testFloat() throws IOException { floatTest("*"); floatTest("/"); } - private static void floatTest(String operator) { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + private static void floatTest(String operator) throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -177,9 +190,11 @@ public final class TestFormulas extends TestCase { c = r.createCell(0); c.setCellFormula("" + Float.MAX_VALUE + operator + Float.MAX_VALUE); } - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); - floatVerify(operator, wb); + floatVerify(operator, wb2); + wb2.close(); } private static void floatVerify(String operator, HSSFWorkbook wb) { @@ -202,25 +217,29 @@ public final class TestFormulas extends TestCase { } } - public void testAreaSum() { + @Test + public void testAreaSum() throws IOException { areaFunctionTest("SUM"); } - public void testAreaAverage() { + @Test + public void testAreaAverage() throws IOException { areaFunctionTest("AVERAGE"); } - public void testRefArraySum() { + @Test + public void testRefArraySum() throws IOException { refArrayFunctionTest("SUM"); } - public void testAreaArraySum() { + @Test + public void testAreaArraySum() throws IOException { refAreaArrayFunctionTest("SUM"); } - private static void operationRefTest(String operator) { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + private static void operationRefTest(String operator) throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -277,8 +296,10 @@ public final class TestFormulas extends TestCase { c.setCellFormula("" + "B1" + operator + "IV255"); } - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - operationalRefVerify(operator, wb); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + operationalRefVerify(operator, wb2); + wb2.close(); } /** @@ -352,9 +373,9 @@ public final class TestFormulas extends TestCase { /** * tests order wrting out == order writing in for a given formula */ - private static void orderTest(String formula) { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + private static void orderTest(String formula) throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -363,15 +384,15 @@ public final class TestFormulas extends TestCase { c = r.createCell(1); c.setCellFormula(formula); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); //get our minimum values r = s.getRow(0); c = r.getCell(1); - assertTrue("minval Formula is as expected", - formula.equals(c.getCellFormula()) - ); + assertTrue("minval Formula is as expected", formula.equals(c.getCellFormula())); + wb2.close(); } /** @@ -379,9 +400,9 @@ public final class TestFormulas extends TestCase { * huge set of x operator y formulas. Next we call binomialVerify and verify * that they are all how we expect. */ - private static void binomialOperator(String operator) { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + private static void binomialOperator(String operator) throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -407,8 +428,10 @@ public final class TestFormulas extends TestCase { c = r.createCell(0); c.setCellFormula("" + Short.MAX_VALUE + operator + Short.MAX_VALUE); } - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - binomialVerify(operator, wb); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + binomialVerify(operator, wb2); + wb2.close(); } /** @@ -454,10 +477,10 @@ public final class TestFormulas extends TestCase { /** * Writes a function then tests to see if its correct */ - public static void areaFunctionTest(String function) { + public static void areaFunctionTest(String function) throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -467,23 +490,25 @@ public final class TestFormulas extends TestCase { c = r.createCell(0); c.setCellFormula(function+"(A2:A3)"); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertTrue("function ="+function+"(A2:A3)", ( (function+"(A2:A3)").equals((function+"(A2:A3)")) ) ); + wb2.close(); } /** * Writes a function then tests to see if its correct */ - public void refArrayFunctionTest(String function) { + public void refArrayFunctionTest(String function) throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -493,14 +518,16 @@ public final class TestFormulas extends TestCase { c = r.createCell(0); c.setCellFormula(function+"(A2,A3)"); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertTrue("function ="+function+"(A2,A3)", ( (function+"(A2,A3)").equals(c.getCellFormula()) ) ); + wb2.close(); } @@ -508,10 +535,10 @@ public final class TestFormulas extends TestCase { * Writes a function then tests to see if its correct * */ - public void refAreaArrayFunctionTest(String function) { + public void refAreaArrayFunctionTest(String function) throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r = null; HSSFCell c = null; @@ -523,8 +550,9 @@ public final class TestFormulas extends TestCase { c=r.createCell(1); c.setCellFormula(function+"($A$2:$A4,B$2:B4)"); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); @@ -536,13 +564,14 @@ public final class TestFormulas extends TestCase { assertTrue("function ="+function+"($A$2:$A4,B$2:B4)", ( (function+"($A$2:$A4,B$2:B4)").equals(c.getCellFormula()) ) ); + wb2.close(); } - - public void testAbsRefs() { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet(); + @Test + public void testAbsRefs() throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet(); HSSFRow r; HSSFCell c; @@ -558,8 +587,9 @@ public final class TestFormulas extends TestCase { c=r.createCell(4); c.setCellFormula("SUM($A$3,$A$2)"); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); - s = wb.getSheetAt(0); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); + s = wb2.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertTrue("A3+A2", ("A3+A2").equals(c.getCellFormula())); @@ -571,34 +601,39 @@ public final class TestFormulas extends TestCase { assertTrue("$A$3+$A$2", ("$A$3+$A$2").equals(c.getCellFormula())); c = r.getCell(4); assertTrue("SUM($A$3,$A$2)", ("SUM($A$3,$A$2)").equals(c.getCellFormula())); + wb2.close(); } - public void testSheetFunctions() { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet("A"); + @Test + public void testSheetFunctions() throws IOException { + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet("A"); HSSFRow r = null; HSSFCell c = null; r = s.createRow(0); c = r.createCell(0);c.setCellValue(1); c = r.createCell(1);c.setCellValue(2); - s = wb.createSheet("B"); + s = wb1.createSheet("B"); r = s.createRow(0); c=r.createCell(0); c.setCellFormula("AVERAGE(A!A1:B1)"); c=r.createCell(1); c.setCellFormula("A!A1+A!B1"); c=r.createCell(2); c.setCellFormula("A!$A$1+A!$B1"); - wb = HSSFTestDataSamples.writeOutAndReadBack(wb); + HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1); + wb1.close(); - s = wb.getSheet("B"); + s = wb2.getSheet("B"); r = s.getRow(0); c = r.getCell(0); assertTrue("expected: AVERAGE(A!A1:B1) got: "+c.getCellFormula(), ("AVERAGE(A!A1:B1)").equals(c.getCellFormula())); c = r.getCell(1); assertTrue("expected: A!A1+A!B1 got: "+c.getCellFormula(), ("A!A1+A!B1").equals(c.getCellFormula())); + wb2.close(); } - public void testRVAoperands() throws Exception { + @Test + public void testRVAoperands() throws IOException { File file = TempFile.createTempFile("testFormulaRVA",".xls"); FileOutputStream out = new FileOutputStream(file); HSSFWorkbook wb = new HSSFWorkbook(); @@ -634,9 +669,11 @@ public final class TestFormulas extends TestCase { wb.write(out); out.close(); assertTrue("file exists",file.exists()); + wb.close(); } - public void testStringFormulas() { + @Test + public void testStringFormulas() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s = wb.createSheet("A"); HSSFRow r = null; @@ -646,32 +683,38 @@ public final class TestFormulas extends TestCase { c=r.createCell(2); c.setCellFormula("LOWER(\"ABC\")"); c=r.createCell(3); c.setCellFormula("CONCATENATE(\" my \",\" name \")"); - HSSFTestDataSamples.writeOutAndReadBack(wb); + HSSFTestDataSamples.writeOutAndReadBack(wb).close(); + wb.close(); wb = openSample("StringFormulas.xls"); s = wb.getSheetAt(0); r = s.getRow(0); c = r.getCell(0); assertEquals("UPPER(\"xyz\")", c.getCellFormula()); + wb.close(); } - public void testLogicalFormulas() { + @Test + public void testLogicalFormulas() throws IOException { - HSSFWorkbook wb = new HSSFWorkbook(); - HSSFSheet s = wb.createSheet("A"); + HSSFWorkbook wb1 = new HSSFWorkbook(); + HSSFSheet s = wb1.createSheet("A"); HSSFRow r = null; HSSFCell c = null; r = s.createRow(0); c=r.createCell(1); c.setCellFormula("IF(A14000\",B1:B5)"; HSSFWorkbook wb = openSample("sumifformula.xls"); @@ -799,10 +849,12 @@ public final class TestFormulas extends TestCase { r = s.getRow(0); c=r.createCell(2); c.setCellFormula(function); - HSSFTestDataSamples.writeOutAndReadBack(wb); + HSSFTestDataSamples.writeOutAndReadBack(wb).close(); + wb.close(); } - public void testSquareMacro() { + @Test + public void testSquareMacro() throws IOException { HSSFWorkbook w = openSample("SquareMacro.xls"); HSSFSheet s0 = w.getSheetAt(0); @@ -839,15 +891,20 @@ public final class TestFormulas extends TestCase { HSSFCell d2 = r[1].getCell(3); assertEquals("square(two())", d2.getCellFormula()); assertEquals(4d, d2.getNumericCellValue(), 1e-9); + + w.close(); } - public void testStringFormulaRead() { + @Test + public void testStringFormulaRead() throws IOException { HSSFWorkbook w = openSample("StringFormulas.xls"); HSSFCell c = w.getSheetAt(0).getRow(0).getCell(0); assertEquals("String Cell value","XYZ",c.getRichStringCellValue().getString()); + w.close(); } /** test for bug 34021*/ + @Test public void testComplexSheetRefs () throws IOException { HSSFWorkbook sb = new HSSFWorkbook(); try { @@ -868,7 +925,8 @@ public final class TestFormulas extends TestCase { } /** Unknown Ptg 3C*/ - public void test27272_1() throws Exception { + @Test + public void test27272_1() throws IOException { HSSFWorkbook wb = openSample("27272_1.xls"); wb.getSheetAt(0); assertEquals("Reference for named range ", "Compliance!#REF!",wb.getNameAt(0).getRefersToFormula()); @@ -879,10 +937,11 @@ public final class TestFormulas extends TestCase { } finally { stream.close(); } - System.out.println("Open "+outF.getAbsolutePath()+" in Excel"); + wb.close(); } /** Unknown Ptg 3D*/ - public void test27272_2() throws Exception { + @Test + public void test27272_2() throws IOException { HSSFWorkbook wb = openSample("27272_2.xls"); assertEquals("Reference for named range ", "LOAD.POD_HISTORIES!#REF!",wb.getNameAt(0).getRefersToFormula()); File outF = TempFile.createTempFile("bug27272_2",".xls"); @@ -892,11 +951,11 @@ public final class TestFormulas extends TestCase { } finally { stream.close(); } - System.out.println("Open "+outF.getAbsolutePath()+" in Excel"); + wb.close(); } - /** MissingArgPtg - * @throws IOException */ + /** MissingArgPtg */ + @Test public void testMissingArgPtg() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); try { @@ -907,19 +966,22 @@ public final class TestFormulas extends TestCase { } } - public void testSharedFormula() { + @Test + public void testSharedFormula() throws IOException { HSSFWorkbook wb = openSample("SharedFormulaTest.xls"); assertEquals("A$1*2", wb.getSheetAt(0).getRow(1).getCell(1).toString()); assertEquals("$A11*2", wb.getSheetAt(0).getRow(11).getCell(1).toString()); assertEquals("DZ2*2", wb.getSheetAt(0).getRow(1).getCell(128).toString()); assertEquals("B32770*2", wb.getSheetAt(0).getRow(32768).getCell(1).toString()); + wb.close(); } /** * Test creation / evaluation of formulas with sheet-level names */ - public void testSheetLevelFormulas(){ + @Test + public void testSheetLevelFormulas() throws IOException { HSSFWorkbook wb = new HSSFWorkbook(); HSSFRow row; @@ -961,13 +1023,14 @@ public final class TestFormulas extends TestCase { assertEquals(5.0, evaluator.evaluate(sh2.getRow(0).getCell(1)).getNumberValue(), 0.0); assertEquals(15.0, evaluator.evaluate(sh2.getRow(0).getCell(2)).getNumberValue(), 0.0); + wb.close(); } /** * Verify that FormulaParser handles defined names beginning with underscores, * see Bug #49640 - * @throws IOException */ + @Test public void testFormulasWithUnderscore() throws IOException{ HSSFWorkbook wb = new HSSFWorkbook(); try { diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java b/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java index feaf77b229..13ee6dd16c 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestPOIFSProperties.java @@ -17,29 +17,30 @@ package org.apache.poi.hssf.usermodel; +import static org.junit.Assert.assertEquals; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.InputStream; -import junit.framework.TestCase; - import org.apache.poi.hpsf.PropertySetFactory; import org.apache.poi.hpsf.SummaryInformation; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.poifs.filesystem.POIFSFileSystem; +import org.junit.Test; /** * Old-style setting of POIFS properties doesn't work with POI 3.0.2 - * - * @author Yegor Kozlov */ -public class TestPOIFSProperties extends TestCase{ +public class TestPOIFSProperties { private static final String title = "Testing POIFS properties"; + @Test public void testFail() throws Exception { InputStream is = HSSFTestDataSamples.openSampleFileStream("Simple.xls"); POIFSFileSystem fs = new POIFSFileSystem(is); + is.close(); HSSFWorkbook wb = new HSSFWorkbook(fs); @@ -55,17 +56,21 @@ public class TestPOIFSProperties extends TestCase{ ByteArrayOutputStream out = new ByteArrayOutputStream(); wb.write(out); out.close(); + wb.close(); POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())); SummaryInformation summary2 = (SummaryInformation)PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME)); //failing assertion assertEquals(title, summary2.getTitle()); + fs2.close(); } + @Test public void testOK() throws Exception { InputStream is = HSSFTestDataSamples.openSampleFileStream("Simple.xls"); POIFSFileSystem fs = new POIFSFileSystem(is); + is.close(); //set POIFS properties before constructing HSSFWorkbook SummaryInformation summary1 = (SummaryInformation)PropertySetFactory.create(fs.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME)); @@ -79,11 +84,12 @@ public class TestPOIFSProperties extends TestCase{ ByteArrayOutputStream out = new ByteArrayOutputStream(); wb.write(out); out.close(); + wb.close(); //read the property POIFSFileSystem fs2 = new POIFSFileSystem(new ByteArrayInputStream(out.toByteArray())); SummaryInformation summary2 = (SummaryInformation)PropertySetFactory.create(fs2.createDocumentInputStream(SummaryInformation.DEFAULT_STREAM_NAME)); assertEquals(title, summary2.getTitle()); - + fs2.close(); } } diff --git a/src/testcases/org/apache/poi/poifs/crypt/TestXorEncryption.java b/src/testcases/org/apache/poi/poifs/crypt/TestXorEncryption.java index cae6426f61..7b35fef8cb 100644 --- a/src/testcases/org/apache/poi/poifs/crypt/TestXorEncryption.java +++ b/src/testcases/org/apache/poi/poifs/crypt/TestXorEncryption.java @@ -21,11 +21,12 @@ import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; +import java.io.IOException; + import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.record.crypto.Biff8EncryptionKey; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.poifs.crypt.CryptoFunctions; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; import org.apache.poi.util.HexRead; import org.junit.After; @@ -33,7 +34,7 @@ import org.junit.Test; public class TestXorEncryption { - private static HSSFTestDataSamples samples = new HSSFTestDataSamples(); + private static final HSSFTestDataSamples samples = new HSSFTestDataSamples(); // to not affect other tests running in the same JVM @After @@ -42,7 +43,7 @@ public class TestXorEncryption { } @Test - public void testXorEncryption() throws Exception { + public void testXorEncryption() throws IOException { // Xor-Password: abc // 2.5.343 XORObfuscation // key = 20810 @@ -59,7 +60,7 @@ public class TestXorEncryption { @SuppressWarnings("static-access") @Test - public void testUserFile() throws Exception { + public void testUserFile() throws IOException { Biff8EncryptionKey.setCurrentUserPassword("abc"); NPOIFSFileSystem fs = new NPOIFSFileSystem(samples.getSampleFile("xor-encryption-abc.xls"), true); HSSFWorkbook hwb = new HSSFWorkbook(fs.getRoot(), true); @@ -68,7 +69,7 @@ public class TestXorEncryption { assertEquals(1.0, sh.getRow(0).getCell(0).getNumericCellValue(), 0.0); assertEquals(2.0, sh.getRow(1).getCell(0).getNumericCellValue(), 0.0); assertEquals(3.0, sh.getRow(2).getCell(0).getNumericCellValue(), 0.0); - + hwb.close(); fs.close(); } } diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestEntryUtils.java b/src/testcases/org/apache/poi/poifs/filesystem/TestEntryUtils.java index 2800e94547..da3e383925 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestEntryUtils.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestEntryUtils.java @@ -17,19 +17,24 @@ package org.apache.poi.poifs.filesystem; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import junit.framework.TestCase; +import org.junit.Test; -public class TestEntryUtils extends TestCase { - private final byte[] dataSmallA = new byte[] { 12, 42, 11, -12, -121 }; - private final byte[] dataSmallB = new byte[] { 11, 73, 21, -92, -103 }; +public class TestEntryUtils { + private static final byte[] dataSmallA = new byte[] { 12, 42, 11, -12, -121 }; + private static final byte[] dataSmallB = new byte[] { 11, 73, 21, -92, -103 }; - public void testCopyRecursively() throws Exception { + @Test + public void testCopyRecursively() throws IOException { POIFSFileSystem fsD = new POIFSFileSystem(); POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry dirA = fs.createDirectory("DirA"); @@ -56,6 +61,8 @@ public class TestEntryUtils extends TestCase { assertNotNull(fsD.getRoot().getEntry("EntryRoot")); assertNotNull(fsD.getRoot().getEntry("EntryA1")); assertNotNull(fsD.getRoot().getEntry("EntryA2")); + + fsD.close(); // Copy directories fsD = new POIFSFileSystem(); @@ -72,6 +79,7 @@ public class TestEntryUtils extends TestCase { assertEquals(0, ((DirectoryEntry)fsD.getRoot().getEntry("DirB")).getEntryCount()); assertNotNull(fsD.getRoot().getEntry("DirA")); assertEquals(2, ((DirectoryEntry)fsD.getRoot().getEntry("DirA")).getEntryCount()); + fsD.close(); // Copy the whole lot fsD = new POIFSFileSystem(); @@ -84,9 +92,12 @@ public class TestEntryUtils extends TestCase { assertNotNull(fsD.getRoot().getEntry(entryR.getName())); assertEquals(0, ((DirectoryEntry)fsD.getRoot().getEntry("DirB")).getEntryCount()); assertEquals(2, ((DirectoryEntry)fsD.getRoot().getEntry("DirA")).getEntryCount()); + fsD.close(); + fs.close(); } - public void testAreDocumentsIdentical() throws Exception { + @Test + public void testAreDocumentsIdentical() throws IOException { POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry dirA = fs.createDirectory("DirA"); DirectoryEntry dirB = fs.createDirectory("DirB"); @@ -112,6 +123,7 @@ public class TestEntryUtils extends TestCase { // Can work with NPOIFS + POIFS ByteArrayOutputStream tmpO = new ByteArrayOutputStream(); fs.writeFilesystem(tmpO); + ByteArrayInputStream tmpI = new ByteArrayInputStream(tmpO.toByteArray()); NPOIFSFileSystem nfs = new NPOIFSFileSystem(tmpI); @@ -129,9 +141,12 @@ public class TestEntryUtils extends TestCase { assertEquals(true, EntryUtils.areDocumentsIdentical(eNA1, entryA1)); assertEquals(true, EntryUtils.areDocumentsIdentical(eNA1, entryB1)); + nfs.close(); + fs.close(); } - public void testAreDirectoriesIdentical() throws Exception { + @Test + public void testAreDirectoriesIdentical() throws IOException { POIFSFileSystem fs = new POIFSFileSystem(); DirectoryEntry dirA = fs.createDirectory("DirA"); DirectoryEntry dirB = fs.createDirectory("DirB"); @@ -187,5 +202,7 @@ public class TestEntryUtils extends TestCase { dirBI.createDocument("IgnZZ", new ByteArrayInputStream(dataSmallA)); assertEquals(true, EntryUtils.areDirectoriesIdentical(fdA, fdB)); + + fs.close(); } } diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index c600c32120..09771af658 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -24,7 +24,12 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStream; import java.nio.ByteBuffer; import java.util.Iterator; @@ -53,7 +58,7 @@ public final class TestNPOIFSFileSystem { * Returns test files with 512 byte and 4k block sizes, loaded * both from InputStreams and Files */ - protected NPOIFSFileSystem[] get512and4kFileAndInput() throws Exception { + protected NPOIFSFileSystem[] get512and4kFileAndInput() throws IOException { NPOIFSFileSystem fsA = new NPOIFSFileSystem(_inst.getFile("BlockSize512.zvi")); NPOIFSFileSystem fsB = new NPOIFSFileSystem(_inst.openResourceAsStream("BlockSize512.zvi")); NPOIFSFileSystem fsC = new NPOIFSFileSystem(_inst.getFile("BlockSize4096.zvi")); @@ -82,8 +87,9 @@ public final class TestNPOIFSFileSystem { assertEquals(doc.getSize(), inp.read(contents)); inp.close(); - if (expected != null) - assertThat(expected, equalTo(contents)); + if (expected != null) { + assertThat(expected, equalTo(contents)); + } } protected static HeaderBlock writeOutAndReadHeader(NPOIFSFileSystem fs) throws IOException { @@ -97,7 +103,6 @@ public final class TestNPOIFSFileSystem { protected static NPOIFSFileSystem writeOutAndReadBack(NPOIFSFileSystem original) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); original.writeFilesystem(baos); - original.close(); return new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); } @@ -109,12 +114,11 @@ public final class TestNPOIFSFileSystem { } finally { fout.close(); } - original.close(); return new NPOIFSFileSystem(file, false); } @Test - public void basicOpen() throws Exception { + public void basicOpen() throws IOException { NPOIFSFileSystem fsA, fsB; // With a simple 512 block file @@ -137,7 +141,7 @@ public final class TestNPOIFSFileSystem { } @Test - public void propertiesAndFatOnRead() throws Exception { + public void propertiesAndFatOnRead() throws IOException { NPOIFSFileSystem fsA, fsB; // With a simple 512 block file @@ -280,7 +284,7 @@ public final class TestNPOIFSFileSystem { * out what the next one is */ @Test - public void nextBlock() throws Exception { + public void nextBlock() throws IOException { NPOIFSFileSystem fsA = new NPOIFSFileSystem(_inst.getFile("BlockSize512.zvi")); NPOIFSFileSystem fsB = new NPOIFSFileSystem(_inst.openResourceAsStream("BlockSize512.zvi")); for(NPOIFSFileSystem fs : new NPOIFSFileSystem[] {fsA,fsB}) { @@ -342,7 +346,7 @@ public final class TestNPOIFSFileSystem { * Check we get the right data back for each block */ @Test - public void getBlock() throws Exception { + public void getBlock() throws IOException { NPOIFSFileSystem fsA = new NPOIFSFileSystem(_inst.getFile("BlockSize512.zvi")); NPOIFSFileSystem fsB = new NPOIFSFileSystem(_inst.openResourceAsStream("BlockSize512.zvi")); for(NPOIFSFileSystem fs : new NPOIFSFileSystem[] {fsA,fsB}) { @@ -416,7 +420,7 @@ public final class TestNPOIFSFileSystem { * to be had from the FAT */ @Test - public void getFreeBlockWithSpare() throws Exception { + public void getFreeBlockWithSpare() throws IOException { NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.getFile("BlockSize512.zvi")); // Our first BAT block has spares @@ -447,142 +451,143 @@ public final class TestNPOIFSFileSystem { * file needs to be extended and another BAT/XBAT added */ @Test - public void getFreeBlockWithNoneSpare() throws Exception { - NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.openResourceAsStream("BlockSize512.zvi")); + public void getFreeBlockWithNoneSpare() throws IOException { + NPOIFSFileSystem fs1 = new NPOIFSFileSystem(_inst.openResourceAsStream("BlockSize512.zvi")); int free; // We have one BAT at block 99 - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(99)); - assertBATCount(fs, 1, 0); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs1.getNextBlock(99)); + assertBATCount(fs1, 1, 0); // We've spare ones from 100 to 128 for(int i=100; i<128; i++) { - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(i)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs1.getNextBlock(i)); } // Check our BAT knows it's free - assertEquals(true, fs.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); + assertEquals(true, fs1.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); // Allocate all the spare ones for(int i=100; i<128; i++) { - fs.setNextBlock(i, POIFSConstants.END_OF_CHAIN); + fs1.setNextBlock(i, POIFSConstants.END_OF_CHAIN); } // BAT is now full, but there's only the one - assertEquals(false, fs.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(128).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(128).getBlock().hasFreeSectors()); fail("Should only be one BAT"); } catch(IndexOutOfBoundsException e) {} - assertBATCount(fs, 1, 0); + assertBATCount(fs1, 1, 0); // Now ask for a free one, will need to extend the file - assertEquals(129, fs.getFreeBlock()); + assertEquals(129, fs1.getFreeBlock()); - assertEquals(false, fs.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); - assertEquals(true, fs.getBATBlockAndIndex(128).getBlock().hasFreeSectors()); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(128)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(129)); + assertEquals(false, fs1.getBATBlockAndIndex(0).getBlock().hasFreeSectors()); + assertEquals(true, fs1.getBATBlockAndIndex(128).getBlock().hasFreeSectors()); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs1.getNextBlock(128)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs1.getNextBlock(129)); // We now have 2 BATs, but no XBATs - assertBATCount(fs, 2, 0); + assertBATCount(fs1, 2, 0); // Fill up to hold 109 BAT blocks for(int i=0; i<109; i++) { - fs.getFreeBlock(); + fs1.getFreeBlock(); int startOffset = i*128; - while( fs.getBATBlockAndIndex(startOffset).getBlock().hasFreeSectors() ) { - free = fs.getFreeBlock(); - fs.setNextBlock(free, POIFSConstants.END_OF_CHAIN); + while( fs1.getBATBlockAndIndex(startOffset).getBlock().hasFreeSectors() ) { + free = fs1.getFreeBlock(); + fs1.setNextBlock(free, POIFSConstants.END_OF_CHAIN); } } - assertEquals(false, fs.getBATBlockAndIndex(109*128-1).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(109*128-1).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(109*128).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(109*128).getBlock().hasFreeSectors()); fail("Should only be 109 BATs"); } catch(IndexOutOfBoundsException e) {} // We now have 109 BATs, but no XBATs - assertBATCount(fs, 109, 0); + assertBATCount(fs1, 109, 0); // Ask for it to be written out, and check the header - HeaderBlock header = writeOutAndReadHeader(fs); + HeaderBlock header = writeOutAndReadHeader(fs1); assertEquals(109, header.getBATCount()); assertEquals(0, header.getXBATCount()); // Ask for another, will get our first XBAT - free = fs.getFreeBlock(); - assertEquals(false, fs.getBATBlockAndIndex(109*128-1).getBlock().hasFreeSectors()); - assertEquals(true, fs.getBATBlockAndIndex(110*128-1).getBlock().hasFreeSectors()); + free = fs1.getFreeBlock(); + assertEquals(false, fs1.getBATBlockAndIndex(109*128-1).getBlock().hasFreeSectors()); + assertEquals(true, fs1.getBATBlockAndIndex(110*128-1).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(110*128).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(110*128).getBlock().hasFreeSectors()); fail("Should only be 110 BATs"); } catch(IndexOutOfBoundsException e) {} - assertBATCount(fs, 110, 1); + assertBATCount(fs1, 110, 1); - header = writeOutAndReadHeader(fs); + header = writeOutAndReadHeader(fs1); assertEquals(110, header.getBATCount()); assertEquals(1, header.getXBATCount()); // Fill the XBAT, which means filling 127 BATs for(int i=109; i<109+127; i++) { - fs.getFreeBlock(); + fs1.getFreeBlock(); int startOffset = i*128; - while( fs.getBATBlockAndIndex(startOffset).getBlock().hasFreeSectors() ) { - free = fs.getFreeBlock(); - fs.setNextBlock(free, POIFSConstants.END_OF_CHAIN); + while( fs1.getBATBlockAndIndex(startOffset).getBlock().hasFreeSectors() ) { + free = fs1.getFreeBlock(); + fs1.setNextBlock(free, POIFSConstants.END_OF_CHAIN); } - assertBATCount(fs, i+1, 1); + assertBATCount(fs1, i+1, 1); } // Should now have 109+127 = 236 BATs - assertEquals(false, fs.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(236*128).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(236*128).getBlock().hasFreeSectors()); fail("Should only be 236 BATs"); } catch(IndexOutOfBoundsException e) {} - assertBATCount(fs, 236, 1); + assertBATCount(fs1, 236, 1); // Ask for another, will get our 2nd XBAT - free = fs.getFreeBlock(); - assertEquals(false, fs.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); - assertEquals(true, fs.getBATBlockAndIndex(237*128-1).getBlock().hasFreeSectors()); + free = fs1.getFreeBlock(); + assertEquals(false, fs1.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); + assertEquals(true, fs1.getBATBlockAndIndex(237*128-1).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(237*128).getBlock().hasFreeSectors()); + assertEquals(false, fs1.getBATBlockAndIndex(237*128).getBlock().hasFreeSectors()); fail("Should only be 237 BATs"); } catch(IndexOutOfBoundsException e) {} // Check the counts now - assertBATCount(fs, 237, 2); + assertBATCount(fs1, 237, 2); // Check the header - header = writeOutAndReadHeader(fs); + header = writeOutAndReadHeader(fs1); // Now, write it out, and read it back in again fully - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs2 = writeOutAndReadBack(fs1); + fs1.close(); // Check that it is seen correctly - assertBATCount(fs, 237, 2); + assertBATCount(fs2, 237, 2); - assertEquals(false, fs.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); - assertEquals(true, fs.getBATBlockAndIndex(237*128-1).getBlock().hasFreeSectors()); + assertEquals(false, fs2.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); + assertEquals(true, fs2.getBATBlockAndIndex(237*128-1).getBlock().hasFreeSectors()); try { - assertEquals(false, fs.getBATBlockAndIndex(237*128).getBlock().hasFreeSectors()); + assertEquals(false, fs2.getBATBlockAndIndex(237*128).getBlock().hasFreeSectors()); fail("Should only be 237 BATs"); } catch(IndexOutOfBoundsException e) {} // All done - fs.close(); + fs2.close(); } /** @@ -590,7 +595,7 @@ public final class TestNPOIFSFileSystem { * entries, and the details on the files in them */ @Test - public void listEntries() throws Exception { + public void listEntries() throws IOException { for(NPOIFSFileSystem fs : get512and4kFileAndInput()) { DirectoryEntry root = fs.getRoot(); assertEquals(5, root.getEntryCount()); @@ -680,9 +685,9 @@ public final class TestNPOIFSFileSystem { DocumentSummaryInformation dinf = null; DirectoryEntry root = null, testDir = null; - for(NPOIFSFileSystem fs : get512and4kFileAndInput()) { + for(NPOIFSFileSystem fs1 : get512and4kFileAndInput()) { // Check we can find the entries we expect - root = fs.getRoot(); + root = fs1.getRoot(); assertEquals(5, root.getEntryCount()); assertThat(root.getEntryNames(), hasItem("Thumbnail")); assertThat(root.getEntryNames(), hasItem("Image")); @@ -692,10 +697,11 @@ public final class TestNPOIFSFileSystem { // Write out, re-load - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs2 = writeOutAndReadBack(fs1); + fs1.close(); // Check they're still there - root = fs.getRoot(); + root = fs2.getRoot(); assertEquals(5, root.getEntryCount()); assertThat(root.getEntryNames(), hasItem("Thumbnail")); assertThat(root.getEntryNames(), hasItem("Image")); @@ -723,9 +729,10 @@ public final class TestNPOIFSFileSystem { // Write out, re-load - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs3 = writeOutAndReadBack(fs2); + fs2.close(); - root = fs.getRoot(); + root = fs3.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(6, root.getEntryCount()); assertThat(root.getEntryNames(), hasItem("Thumbnail")); @@ -749,9 +756,10 @@ public final class TestNPOIFSFileSystem { // Write out and read once more, just to be sure - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs4 = writeOutAndReadBack(fs3); + fs3.close(); - root = fs.getRoot(); + root = fs4.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(6, root.getEntryCount()); assertThat(root.getEntryNames(), hasItem("Thumbnail")); @@ -782,10 +790,11 @@ public final class TestNPOIFSFileSystem { // Write out, re-load - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs5 = writeOutAndReadBack(fs4); + fs4.close(); // Check it's all there - root = fs.getRoot(); + root = fs5.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(5, root.getEntryCount()); assertThat(root.getEntryNames(), hasItem("Thumbnail")); @@ -814,10 +823,11 @@ public final class TestNPOIFSFileSystem { // Save - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs6 = writeOutAndReadBack(fs5); + fs5.close(); // Check - root = fs.getRoot(); + root = fs6.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(5, root.getEntryCount()); @@ -839,9 +849,10 @@ public final class TestNPOIFSFileSystem { testDir.createDocument("Mini2", new ByteArrayInputStream(mini2)); // Save, load, check - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs7 = writeOutAndReadBack(fs6); + fs6.close(); - root = fs.getRoot(); + root = fs7.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(5, root.getEntryCount()); @@ -871,9 +882,10 @@ public final class TestNPOIFSFileSystem { // Save, load, check - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs8 = writeOutAndReadBack(fs7); + fs7.close(); - root = fs.getRoot(); + root = fs8.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(5, root.getEntryCount()); @@ -907,9 +919,10 @@ public final class TestNPOIFSFileSystem { // Re-check - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs9 = writeOutAndReadBack(fs8); + fs8.close(); - root = fs.getRoot(); + root = fs9.getRoot(); testDir = (DirectoryEntry)root.getEntry("Testing 123"); assertEquals(5, root.getEntryCount()); @@ -932,7 +945,7 @@ public final class TestNPOIFSFileSystem { // All done - fs.close(); + fs9.close(); } } @@ -941,51 +954,52 @@ public final class TestNPOIFSFileSystem { * Then, add some streams, write and read */ @Test - @SuppressWarnings("resource") - public void createWriteRead() throws Exception { - NPOIFSFileSystem fs = new NPOIFSFileSystem(); + public void createWriteRead() throws IOException { + NPOIFSFileSystem fs1 = new NPOIFSFileSystem(); DocumentEntry miniDoc; DocumentEntry normDoc; // Initially has Properties + BAT but not SBAT - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs1.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs1.getNextBlock(2)); // Check that the SBAT is empty - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getRoot().getProperty().getStartBlock()); // Check that properties table was given block 0 - assertEquals(0, fs._get_property_table().getStartBlock()); + assertEquals(0, fs1._get_property_table().getStartBlock()); // Write and read it - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs2 = writeOutAndReadBack(fs1); + fs1.close(); // No change, SBAT remains empty - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(3)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); - assertEquals(0, fs._get_property_table().getStartBlock()); - + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs2.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs2.getNextBlock(2)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs2.getNextBlock(3)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getRoot().getProperty().getStartBlock()); + assertEquals(0, fs2._get_property_table().getStartBlock()); + fs2.close(); // Check the same but with saving to a file - fs = new NPOIFSFileSystem(); - fs = writeOutFileAndReadBack(fs); + NPOIFSFileSystem fs3 = new NPOIFSFileSystem(); + NPOIFSFileSystem fs4 = writeOutFileAndReadBack(fs3); + fs3.close(); // Same, no change, SBAT remains empty - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(3)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); - assertEquals(0, fs._get_property_table().getStartBlock()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs4.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(2)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(3)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getRoot().getProperty().getStartBlock()); + assertEquals(0, fs4._get_property_table().getStartBlock()); // Put everything within a new directory - DirectoryEntry testDir = fs.createDirectory("Test Directory"); + DirectoryEntry testDir = fs4.createDirectory("Test Directory"); // Add a new Normal Stream (Normal Streams minimum 4096 bytes) byte[] main4096 = new byte[4096]; @@ -993,20 +1007,20 @@ public final class TestNPOIFSFileSystem { main4096[4095] = -11; testDir.createDocument("Normal4096", new ByteArrayInputStream(main4096)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(3, fs.getNextBlock(2)); - assertEquals(4, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(10)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(11)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs4.getNextBlock(1)); + assertEquals(3, fs4.getNextBlock(2)); + assertEquals(4, fs4.getNextBlock(3)); + assertEquals(5, fs4.getNextBlock(4)); + assertEquals(6, fs4.getNextBlock(5)); + assertEquals(7, fs4.getNextBlock(6)); + assertEquals(8, fs4.getNextBlock(7)); + assertEquals(9, fs4.getNextBlock(8)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(9)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(10)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(11)); // SBAT still unused - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getRoot().getProperty().getStartBlock()); // Add a bigger Normal Stream @@ -1015,32 +1029,32 @@ public final class TestNPOIFSFileSystem { main5124[5123] = -33; testDir.createDocument("Normal5124", new ByteArrayInputStream(main5124)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(3, fs.getNextBlock(2)); - assertEquals(4, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs4.getNextBlock(1)); + assertEquals(3, fs4.getNextBlock(2)); + assertEquals(4, fs4.getNextBlock(3)); + assertEquals(5, fs4.getNextBlock(4)); + assertEquals(6, fs4.getNextBlock(5)); + assertEquals(7, fs4.getNextBlock(6)); + assertEquals(8, fs4.getNextBlock(7)); + assertEquals(9, fs4.getNextBlock(8)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(9)); - assertEquals(11, fs.getNextBlock(10)); - assertEquals(12, fs.getNextBlock(11)); - assertEquals(13, fs.getNextBlock(12)); - assertEquals(14, fs.getNextBlock(13)); - assertEquals(15, fs.getNextBlock(14)); - assertEquals(16, fs.getNextBlock(15)); - assertEquals(17, fs.getNextBlock(16)); - assertEquals(18, fs.getNextBlock(17)); - assertEquals(19, fs.getNextBlock(18)); - assertEquals(20, fs.getNextBlock(19)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(21)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(22)); + assertEquals(11, fs4.getNextBlock(10)); + assertEquals(12, fs4.getNextBlock(11)); + assertEquals(13, fs4.getNextBlock(12)); + assertEquals(14, fs4.getNextBlock(13)); + assertEquals(15, fs4.getNextBlock(14)); + assertEquals(16, fs4.getNextBlock(15)); + assertEquals(17, fs4.getNextBlock(16)); + assertEquals(18, fs4.getNextBlock(17)); + assertEquals(19, fs4.getNextBlock(18)); + assertEquals(20, fs4.getNextBlock(19)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(20)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(21)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(22)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getRoot().getProperty().getStartBlock()); // Now Add a mini stream @@ -1048,40 +1062,41 @@ public final class TestNPOIFSFileSystem { testDir.createDocument("Mini", new ByteArrayInputStream(mini)); // Mini stream will get one block for fat + one block for data - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(3, fs.getNextBlock(2)); - assertEquals(4, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs4.getNextBlock(1)); + assertEquals(3, fs4.getNextBlock(2)); + assertEquals(4, fs4.getNextBlock(3)); + assertEquals(5, fs4.getNextBlock(4)); + assertEquals(6, fs4.getNextBlock(5)); + assertEquals(7, fs4.getNextBlock(6)); + assertEquals(8, fs4.getNextBlock(7)); + assertEquals(9, fs4.getNextBlock(8)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(9)); - assertEquals(11, fs.getNextBlock(10)); - assertEquals(12, fs.getNextBlock(11)); - assertEquals(13, fs.getNextBlock(12)); - assertEquals(14, fs.getNextBlock(13)); - assertEquals(15, fs.getNextBlock(14)); - assertEquals(16, fs.getNextBlock(15)); - assertEquals(17, fs.getNextBlock(16)); - assertEquals(18, fs.getNextBlock(17)); - assertEquals(19, fs.getNextBlock(18)); - assertEquals(20, fs.getNextBlock(19)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(23)); + assertEquals(11, fs4.getNextBlock(10)); + assertEquals(12, fs4.getNextBlock(11)); + assertEquals(13, fs4.getNextBlock(12)); + assertEquals(14, fs4.getNextBlock(13)); + assertEquals(15, fs4.getNextBlock(14)); + assertEquals(16, fs4.getNextBlock(15)); + assertEquals(17, fs4.getNextBlock(16)); + assertEquals(18, fs4.getNextBlock(17)); + assertEquals(19, fs4.getNextBlock(18)); + assertEquals(20, fs4.getNextBlock(19)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(20)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(21)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs4.getNextBlock(22)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs4.getNextBlock(23)); // Check the mini stream location was set // (21 is mini fat, 22 is first mini stream block) - assertEquals(22, fs.getRoot().getProperty().getStartBlock()); + assertEquals(22, fs4.getRoot().getProperty().getStartBlock()); // Write and read back - fs = writeOutAndReadBack(fs); - HeaderBlock header = writeOutAndReadHeader(fs); + NPOIFSFileSystem fs5 = writeOutAndReadBack(fs4); + fs4.close(); + HeaderBlock header = writeOutAndReadHeader(fs5); // Check the header has the right points in it assertEquals(1, header.getBATCount()); @@ -1089,44 +1104,44 @@ public final class TestNPOIFSFileSystem { assertEquals(0, header.getPropertyStart()); assertEquals(1, header.getSBATCount()); assertEquals(21, header.getSBATStart()); - assertEquals(22, fs._get_property_table().getRoot().getStartBlock()); + assertEquals(22, fs5._get_property_table().getRoot().getStartBlock()); // Block use should be almost the same, except the properties // stream will have grown out to cover 2 blocks // Check the block use is all unchanged - assertEquals(23, fs.getNextBlock(0)); // Properties now extends over 2 blocks - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(23, fs5.getNextBlock(0)); // Properties now extends over 2 blocks + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs5.getNextBlock(1)); - assertEquals(3, fs.getNextBlock(2)); - assertEquals(4, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); // End of normal4096 + assertEquals(3, fs5.getNextBlock(2)); + assertEquals(4, fs5.getNextBlock(3)); + assertEquals(5, fs5.getNextBlock(4)); + assertEquals(6, fs5.getNextBlock(5)); + assertEquals(7, fs5.getNextBlock(6)); + assertEquals(8, fs5.getNextBlock(7)); + assertEquals(9, fs5.getNextBlock(8)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs5.getNextBlock(9)); // End of normal4096 - assertEquals(11, fs.getNextBlock(10)); - assertEquals(12, fs.getNextBlock(11)); - assertEquals(13, fs.getNextBlock(12)); - assertEquals(14, fs.getNextBlock(13)); - assertEquals(15, fs.getNextBlock(14)); - assertEquals(16, fs.getNextBlock(15)); - assertEquals(17, fs.getNextBlock(16)); - assertEquals(18, fs.getNextBlock(17)); - assertEquals(19, fs.getNextBlock(18)); - assertEquals(20, fs.getNextBlock(19)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(20)); // End of normal5124 + assertEquals(11, fs5.getNextBlock(10)); + assertEquals(12, fs5.getNextBlock(11)); + assertEquals(13, fs5.getNextBlock(12)); + assertEquals(14, fs5.getNextBlock(13)); + assertEquals(15, fs5.getNextBlock(14)); + assertEquals(16, fs5.getNextBlock(15)); + assertEquals(17, fs5.getNextBlock(16)); + assertEquals(18, fs5.getNextBlock(17)); + assertEquals(19, fs5.getNextBlock(18)); + assertEquals(20, fs5.getNextBlock(19)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs5.getNextBlock(20)); // End of normal5124 - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); // Mini Stream FAT - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream data - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); // Properties #2 - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs5.getNextBlock(21)); // Mini Stream FAT + assertEquals(POIFSConstants.END_OF_CHAIN, fs5.getNextBlock(22)); // Mini Stream data + assertEquals(POIFSConstants.END_OF_CHAIN, fs5.getNextBlock(23)); // Properties #2 + assertEquals(POIFSConstants.UNUSED_BLOCK, fs5.getNextBlock(24)); // Check some data - assertEquals(1, fs.getRoot().getEntryCount()); - testDir = (DirectoryEntry)fs.getRoot().getEntry("Test Directory"); + assertEquals(1, fs5.getRoot().getEntryCount()); + testDir = (DirectoryEntry)fs5.getRoot().getEntry("Test Directory"); assertEquals(3, testDir.getEntryCount()); miniDoc = (DocumentEntry)testDir.getEntry("Mini"); @@ -1145,55 +1160,56 @@ public final class TestNPOIFSFileSystem { // Check - will have un-used sectors now - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs6 = writeOutAndReadBack(fs5); + fs5.close(); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); // Props back in 1 block - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs6.getNextBlock(0)); // Props back in 1 block + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs6.getNextBlock(1)); - assertEquals(3, fs.getNextBlock(2)); - assertEquals(4, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(9)); // End of normal4096 + assertEquals(3, fs6.getNextBlock(2)); + assertEquals(4, fs6.getNextBlock(3)); + assertEquals(5, fs6.getNextBlock(4)); + assertEquals(6, fs6.getNextBlock(5)); + assertEquals(7, fs6.getNextBlock(6)); + assertEquals(8, fs6.getNextBlock(7)); + assertEquals(9, fs6.getNextBlock(8)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs6.getNextBlock(9)); // End of normal4096 - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(10)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(11)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(12)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(13)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(14)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(15)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(16)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(17)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(18)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(19)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(20)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(10)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(11)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(12)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(13)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(14)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(15)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(16)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(17)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(18)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(19)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(20)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); // Mini Stream FAT - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream data - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(23)); // Properties gone - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(25)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs6.getNextBlock(21)); // Mini Stream FAT + assertEquals(POIFSConstants.END_OF_CHAIN, fs6.getNextBlock(22)); // Mini Stream data + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(23)); // Properties gone + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(24)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs6.getNextBlock(25)); // All done - fs.close(); + fs6.close(); } @Test - public void addBeforeWrite() throws Exception { - NPOIFSFileSystem fs = new NPOIFSFileSystem(); + public void addBeforeWrite() throws IOException { + NPOIFSFileSystem fs1 = new NPOIFSFileSystem(); DocumentEntry miniDoc; DocumentEntry normDoc; HeaderBlock hdr; // Initially has Properties + BAT but nothing else - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs1.getNextBlock(1)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs1.getNextBlock(2)); - hdr = writeOutAndReadHeader(fs); + hdr = writeOutAndReadHeader(fs1); // No mini stream, and no xbats // Will have fat then properties stream assertEquals(1, hdr.getBATCount()); @@ -1201,14 +1217,14 @@ public final class TestNPOIFSFileSystem { assertEquals(0, hdr.getPropertyStart()); assertEquals(POIFSConstants.END_OF_CHAIN, hdr.getSBATStart()); assertEquals(POIFSConstants.END_OF_CHAIN, hdr.getXBATIndex()); - assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*3, fs.size()); - + assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*3, fs1.size()); + fs1.close(); // Get a clean filesystem to start with - fs = new NPOIFSFileSystem(); + fs1 = new NPOIFSFileSystem(); // Put our test files in a non-standard place - DirectoryEntry parentDir = fs.createDirectory("Parent Directory"); + DirectoryEntry parentDir = fs1.createDirectory("Parent Directory"); DirectoryEntry testDir = parentDir.createDirectory("Test Directory"); @@ -1224,20 +1240,20 @@ public final class TestNPOIFSFileSystem { // Check the mini stream was added, then the main stream - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(0)); - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); // Mini Fat - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); // Mini Stream - assertEquals(5, fs.getNextBlock(4)); // Main Stream - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(11, fs.getNextBlock(10)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(11)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(12)); - assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*13, fs.size()); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(0)); + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs1.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(2)); // Mini Fat + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(3)); // Mini Stream + assertEquals(5, fs1.getNextBlock(4)); // Main Stream + assertEquals(6, fs1.getNextBlock(5)); + assertEquals(7, fs1.getNextBlock(6)); + assertEquals(8, fs1.getNextBlock(7)); + assertEquals(9, fs1.getNextBlock(8)); + assertEquals(10, fs1.getNextBlock(9)); + assertEquals(11, fs1.getNextBlock(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs1.getNextBlock(11)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs1.getNextBlock(12)); + assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*13, fs1.size()); // Check that we can read the right data pre-write @@ -1249,8 +1265,9 @@ public final class TestNPOIFSFileSystem { // Write, read, check - hdr = writeOutAndReadHeader(fs); - fs = writeOutAndReadBack(fs); + hdr = writeOutAndReadHeader(fs1); + NPOIFSFileSystem fs2 = writeOutAndReadBack(fs1); + fs1.close(); // Check the header details - will have the sbat near the start, // then the properties at the end @@ -1262,25 +1279,25 @@ public final class TestNPOIFSFileSystem { // Check the block allocation is unchanged, other than // the properties stream going in at the end - assertEquals(12, fs.getNextBlock(0)); // Properties - assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(1)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); - assertEquals(5, fs.getNextBlock(4)); - assertEquals(6, fs.getNextBlock(5)); - assertEquals(7, fs.getNextBlock(6)); - assertEquals(8, fs.getNextBlock(7)); - assertEquals(9, fs.getNextBlock(8)); - assertEquals(10, fs.getNextBlock(9)); - assertEquals(11, fs.getNextBlock(10)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(11)); - assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(12)); - assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(13)); - assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*14, fs.size()); + assertEquals(12, fs2.getNextBlock(0)); // Properties + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs2.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getNextBlock(2)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getNextBlock(3)); + assertEquals(5, fs2.getNextBlock(4)); + assertEquals(6, fs2.getNextBlock(5)); + assertEquals(7, fs2.getNextBlock(6)); + assertEquals(8, fs2.getNextBlock(7)); + assertEquals(9, fs2.getNextBlock(8)); + assertEquals(10, fs2.getNextBlock(9)); + assertEquals(11, fs2.getNextBlock(10)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getNextBlock(11)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs2.getNextBlock(12)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs2.getNextBlock(13)); + assertEquals(POIFSConstants.SMALLER_BIG_BLOCK_SIZE*14, fs2.size()); // Check the data - DirectoryEntry fsRoot = fs.getRoot(); + DirectoryEntry fsRoot = fs2.getRoot(); assertEquals(1, fsRoot.getEntryCount()); parentDir = (DirectoryEntry)fsRoot.getEntry("Parent Directory"); @@ -1308,9 +1325,10 @@ public final class TestNPOIFSFileSystem { // Recheck the data in all 4 streams - fs = writeOutAndReadBack(fs); + NPOIFSFileSystem fs3 = writeOutAndReadBack(fs2); + fs2.close(); - fsRoot = fs.getRoot(); + fsRoot = fs3.getRoot(); assertEquals(1, fsRoot.getEntryCount()); parentDir = (DirectoryEntry)fsRoot.getEntry("Parent Directory"); @@ -1329,11 +1347,11 @@ public final class TestNPOIFSFileSystem { assertContentsMatches(main4106, normDoc); // All done - fs.close(); + fs3.close(); } @Test - public void readZeroLengthEntries() throws Exception { + public void readZeroLengthEntries() throws IOException { NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.getFile("only-zero-byte-streams.ole2")); DirectoryNode testDir = fs.getRoot(); assertEquals(3, testDir.getEntryCount()); @@ -1364,9 +1382,9 @@ public final class TestNPOIFSFileSystem { } @Test - public void writeZeroLengthEntries() throws Exception { - NPOIFSFileSystem fs = new NPOIFSFileSystem(); - DirectoryNode testDir = fs.getRoot(); + public void writeZeroLengthEntries() throws IOException { + NPOIFSFileSystem fs1 = new NPOIFSFileSystem(); + DirectoryNode testDir = fs1.getRoot(); DocumentEntry miniDoc; DocumentEntry normDoc; DocumentEntry emptyDoc; @@ -1405,7 +1423,7 @@ public final class TestNPOIFSFileSystem { // Look at the properties entry, and check the empty ones // have zero size and no start block - NPropertyTable props = fs._get_property_table(); + NPropertyTable props = fs1._get_property_table(); Iterator propsIt = props.getRoot().getChildren(); Property prop = propsIt.next(); @@ -1435,8 +1453,9 @@ public final class TestNPOIFSFileSystem { // Save and re-check - fs = writeOutAndReadBack(fs); - testDir = fs.getRoot(); + NPOIFSFileSystem fs2 = writeOutAndReadBack(fs1); + fs1.close(); + testDir = fs2.getRoot(); miniDoc = (DocumentEntry)testDir.getEntry("Mini2"); assertContentsMatches(mini2, miniDoc); @@ -1458,7 +1477,7 @@ public final class TestNPOIFSFileSystem { assertEquals(64, testDir.getProperty().getSize()); // All done - fs.close(); + fs2.close(); } /** @@ -1466,7 +1485,7 @@ public final class TestNPOIFSFileSystem { * write it out, read it with POIFS, and see the original data */ @Test - public void NPOIFSReadCopyWritePOIFSRead() throws Exception { + public void NPOIFSReadCopyWritePOIFSRead() throws IOException { File testFile = POIDataSamples.getSpreadSheetInstance().getFile("Simple.xls"); NPOIFSFileSystem src = new NPOIFSFileSystem(testFile); byte wbDataExp[] = IOUtils.toByteArray(src.createDocumentInputStream("Workbook")); @@ -1483,6 +1502,7 @@ public final class TestNPOIFSFileSystem { byte wbDataAct[] = IOUtils.toByteArray(pfs.createDocumentInputStream("Workbook")); assertThat(wbDataExp, equalTo(wbDataAct)); + pfs.close(); } /** @@ -1490,7 +1510,7 @@ public final class TestNPOIFSFileSystem { * contents */ @Test - public void RecursiveDelete() throws Exception { + public void RecursiveDelete() throws IOException { File testFile = POIDataSamples.getSpreadSheetInstance().getFile("SimpleMacro.xls"); NPOIFSFileSystem src = new NPOIFSFileSystem(testFile);