From 75826dcd7509cf8d2e017f8acf47e682fedf51d3 Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Thu, 24 Apr 2014 22:22:06 +0000 Subject: [PATCH] Add common code for writing out and reading NPOIFS again, and add a disabled roundtrip test (currently failing...) git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1589895 13f79535-47bb-0310-9956-ffa450edef68 --- .../filesystem/TestNPOIFSFileSystem.java | 63 +++++++++++++++++-- 1 file changed, 57 insertions(+), 6 deletions(-) diff --git a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java index a5617ef279..cd0598be30 100644 --- a/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java +++ b/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java @@ -83,6 +83,13 @@ public final class TestNPOIFSFileSystem { return header; } + protected static NPOIFSFileSystem writeOutAndReadBack(NPOIFSFileSystem original) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + original.writeFilesystem(baos); + original.close(); + return new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); + } + @Test public void basicOpen() throws Exception { NPOIFSFileSystem fsA, fsB; @@ -521,11 +528,9 @@ public final class TestNPOIFSFileSystem { // Now, write it out, and read it back in again fully - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - fs.writeFilesystem(baos); + fs = writeOutAndReadBack(fs); // Check that it is seen correctly - fs = new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); assertBATCount(fs, 237, 2); assertEquals(false, fs.getBATBlockAndIndex(236*128-1).getBlock().hasFreeSectors()); @@ -670,9 +675,7 @@ public final class TestNPOIFSFileSystem { assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); // Write and read it - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - fs.writeFilesystem(baos); - fs = new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray())); + fs = writeOutAndReadBack(fs); // Property table entries have been added to the blocks assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); @@ -795,7 +798,55 @@ public final class TestNPOIFSFileSystem { // Write and read back + fs = writeOutAndReadBack(fs); + + // Check it's all unchanged + // TODO Fix it so that it is.... +if (1==0) { + assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); + if (fs.getBigBlockSize() == POIFSConstants.SMALLER_BIG_BLOCK_SIZE) { + 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(10, fs.getNextBlock(9)); + assertEquals(POIFSConstants.END_OF_CHAIN, 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(21, fs.getNextBlock(20)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(21)); + assertEquals(23, fs.getNextBlock(22)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); + } else { + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(3)); + assertEquals(5, fs.getNextBlock(4)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(5)); + assertEquals(7, fs.getNextBlock(6)); + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(7)); + assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(8)); + } + assertEquals(POIFSConstants.END_OF_CHAIN, fs.getRoot().getProperty().getStartBlock()); +} + + // Check some data // TODO + + + // All done + fs.close(); } @Test -- 2.39.5