Complete NPOIFS write tests

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1590162 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2014-04-25 22:05:46 +00:00
parent 0bdc025279
commit 0250a0372f

View File

@ -694,6 +694,7 @@ public final class TestNPOIFSFileSystem {
fs = writeOutAndReadBack(fs); fs = writeOutAndReadBack(fs);
root = fs.getRoot(); root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(6, root.getEntryCount()); assertEquals(6, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail")); assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image")); assertThat(root.getEntryNames(), hasItem("Image"));
@ -712,7 +713,30 @@ public final class TestNPOIFSFileSystem {
(DocumentEntry)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME))); (DocumentEntry)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME)));
assertEquals(131333, dinf.getOSVersion()); assertEquals(131333, dinf.getOSVersion());
assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini"));
// Write out and read once more, just to be sure
fs = writeOutAndReadBack(fs);
root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123"); testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(6, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image"));
assertThat(root.getEntryNames(), hasItem("Tags"));
assertThat(root.getEntryNames(), hasItem("Testing 123"));
assertThat(root.getEntryNames(), hasItem("\u0005DocumentSummaryInformation"));
assertThat(root.getEntryNames(), hasItem("\u0005SummaryInformation"));
sinf = (SummaryInformation)PropertySetFactory.create(new NDocumentInputStream(
(DocumentEntry)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME)));
assertEquals(131333, sinf.getOSVersion());
dinf = (DocumentSummaryInformation)PropertySetFactory.create(new NDocumentInputStream(
(DocumentEntry)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME)));
assertEquals(131333, dinf.getOSVersion());
assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini")); assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini"));
@ -727,10 +751,10 @@ public final class TestNPOIFSFileSystem {
// Write out, re-load // Write out, re-load
fs = writeOutAndReadBack(fs); fs = writeOutAndReadBack(fs);
}
// TODO Fix from here on down
/*
// Check it's all there // Check it's all there
root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(5, root.getEntryCount()); assertEquals(5, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail")); assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image")); assertThat(root.getEntryNames(), hasItem("Image"));
@ -748,7 +772,6 @@ public final class TestNPOIFSFileSystem {
(DocumentEntry)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME))); (DocumentEntry)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME)));
assertEquals(131333, dinf.getOSVersion()); assertEquals(131333, dinf.getOSVersion());
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini")); assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini"));
assertContentsMatches(main4096, (DocumentEntry)testDir.getEntry("Normal4096")); assertContentsMatches(main4096, (DocumentEntry)testDir.getEntry("Normal4096"));
@ -762,6 +785,9 @@ public final class TestNPOIFSFileSystem {
fs = writeOutAndReadBack(fs); fs = writeOutAndReadBack(fs);
// Check // Check
root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(5, root.getEntryCount()); assertEquals(5, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail")); assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image")); assertThat(root.getEntryNames(), hasItem("Image"));
@ -769,7 +795,6 @@ public final class TestNPOIFSFileSystem {
assertThat(root.getEntryNames(), hasItem("\u0005DocumentSummaryInformation")); assertThat(root.getEntryNames(), hasItem("\u0005DocumentSummaryInformation"));
assertThat(root.getEntryNames(), hasItem("\u0005SummaryInformation")); assertThat(root.getEntryNames(), hasItem("\u0005SummaryInformation"));
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(4, testDir.getEntryCount()); assertEquals(4, testDir.getEntryCount());
assertThat(testDir.getEntryNames(), hasItem("Mini")); assertThat(testDir.getEntryNames(), hasItem("Mini"));
assertThat(testDir.getEntryNames(), hasItem("Normal4096")); assertThat(testDir.getEntryNames(), hasItem("Normal4096"));
@ -777,18 +802,69 @@ public final class TestNPOIFSFileSystem {
assertThat(testDir.getEntryNames(), hasItem("Testing ABC")); assertThat(testDir.getEntryNames(), hasItem("Testing ABC"));
// Another mini stream // Add another mini stream
byte[] mini2 = new byte[] { -42, 0, -1, -2, -3, -4, -42 };
testDir.createDocument("Mini2", new ByteArrayInputStream(mini2));
// Save, load, check // Save, load, check
fs = writeOutAndReadBack(fs);
root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(5, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image"));
assertThat(root.getEntryNames(), hasItem("Testing 123"));
assertThat(root.getEntryNames(), hasItem("\u0005DocumentSummaryInformation"));
assertThat(root.getEntryNames(), hasItem("\u0005SummaryInformation"));
assertEquals(5, testDir.getEntryCount());
assertThat(testDir.getEntryNames(), hasItem("Mini"));
assertThat(testDir.getEntryNames(), hasItem("Mini2"));
assertThat(testDir.getEntryNames(), hasItem("Normal4096"));
assertThat(testDir.getEntryNames(), hasItem("Testing 789"));
assertThat(testDir.getEntryNames(), hasItem("Testing ABC"));
assertContentsMatches(mini, (DocumentEntry)testDir.getEntry("Mini"));
assertContentsMatches(mini2, (DocumentEntry)testDir.getEntry("Mini2"));
assertContentsMatches(main4096, (DocumentEntry)testDir.getEntry("Normal4096"));
// Delete a mini stream, add one more // Delete a mini stream, add one more
testDir.getEntry("Mini").delete();
byte[] mini3 = new byte[] { 42, 0, 42, 0, 42, 0, 42 };
testDir.createDocument("Mini3", new ByteArrayInputStream(mini3));
// Save, load, check // Save, load, check
fs = writeOutAndReadBack(fs);
root = fs.getRoot();
testDir = (DirectoryEntry)root.getEntry("Testing 123");
assertEquals(5, root.getEntryCount());
assertThat(root.getEntryNames(), hasItem("Thumbnail"));
assertThat(root.getEntryNames(), hasItem("Image"));
assertThat(root.getEntryNames(), hasItem("Testing 123"));
assertThat(root.getEntryNames(), hasItem("\u0005DocumentSummaryInformation"));
assertThat(root.getEntryNames(), hasItem("\u0005SummaryInformation"));
assertEquals(5, testDir.getEntryCount());
assertThat(testDir.getEntryNames(), hasItem("Mini2"));
assertThat(testDir.getEntryNames(), hasItem("Mini3"));
assertThat(testDir.getEntryNames(), hasItem("Normal4096"));
assertThat(testDir.getEntryNames(), hasItem("Testing 789"));
assertThat(testDir.getEntryNames(), hasItem("Testing ABC"));
assertContentsMatches(mini2, (DocumentEntry)testDir.getEntry("Mini2"));
assertContentsMatches(mini3, (DocumentEntry)testDir.getEntry("Mini3"));
assertContentsMatches(main4096, (DocumentEntry)testDir.getEntry("Normal4096"));
// All done // All done
fs.close(); fs.close();
} }
*/
} }
/** /**
@ -981,6 +1057,45 @@ public final class TestNPOIFSFileSystem {
normDoc = (DocumentEntry)testDir.getEntry("Normal5124"); normDoc = (DocumentEntry)testDir.getEntry("Normal5124");
assertContentsMatches(main5124, normDoc); assertContentsMatches(main5124, normDoc);
// Delete a couple of streams
miniDoc.delete();
normDoc.delete();
// Check - will have un-used sectors now
fs = writeOutAndReadBack(fs);
assertEquals(POIFSConstants.FAT_SECTOR_BLOCK, fs.getNextBlock(0));
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(1));
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(2)); // Props back in 1 block
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)); // End of normal4096
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, fs.getNextBlock(21));
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(22)); // Mini Stream FAT
assertEquals(POIFSConstants.END_OF_CHAIN, fs.getNextBlock(23)); // Mini Stream data
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(24)); // Properties gone
assertEquals(POIFSConstants.UNUSED_BLOCK, fs.getNextBlock(25));
// All done // All done
fs.close(); fs.close();
} }