]> source.dussan.org Git - poi.git/commitdiff
Add DISABLED test which shows the latest problem relating to bug #49139
authorNick Burch <nick@apache.org>
Mon, 3 May 2010 21:58:26 +0000 (21:58 +0000)
committerNick Burch <nick@apache.org>
Mon, 3 May 2010 21:58:26 +0000 (21:58 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@940648 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/poifs/filesystem/DirectoryEntry.java
src/testcases/org/apache/poi/poifs/filesystem/TestPOIFSFileSystem.java

index 8b7119b571536300d4396ea3667107224096ec37..844070fb508a90b7f08250ccf421f9ed660f79a2 100644 (file)
@@ -33,7 +33,7 @@ import org.apache.poi.hpsf.ClassID;
  */
 
 public interface DirectoryEntry
-    extends Entry
+    extends Entry, Iterable<Entry>
 {
 
     /**
index 5bb740881ac8a0eac84c71382fe936f240a24146..1b370124f60100d47c283be377eb305993176017 100644 (file)
@@ -177,9 +177,9 @@ public final class TestPOIFSFileSystem extends TestCase {
        /**
         * Most OLE2 files use 512byte blocks. However, a small number
         *  use 4k blocks. Check that we can open these.
-        * DISABLED until we get a sample 4k block file that's under 22mb...
+        * DISABLED until we fix the bug with DocumentBlocks on 4k sizes
         */
-       public void test4KBlocks() throws Exception {
+       public void DISABLEDtest4KBlocks() throws Exception {
       POIDataSamples _samples = POIDataSamples.getPOIFSInstance();
           InputStream inp = _samples.openResourceAsStream("BlockSize4096.zvi");
           
@@ -203,11 +203,28 @@ public final class TestPOIFSFileSystem extends TestCase {
           );
           assertTrue(fs.getRoot().getEntryCount() > 3);
           
+          // Check we can get at all the contents
+          checkAllDirectoryContents(fs.getRoot());
+          
+          
           // Finally, check we can do a similar 512byte one too
           fs = new POIFSFileSystem(
             _samples.openResourceAsStream("BlockSize512.zvi")
       );
       assertTrue(fs.getRoot().getEntryCount() > 3);
+      checkAllDirectoryContents(fs.getRoot());
+       }
+       private void checkAllDirectoryContents(DirectoryEntry dir) throws IOException {
+          for(Entry entry : dir) {
+             if(entry instanceof DirectoryEntry) {
+                checkAllDirectoryContents((DirectoryEntry)entry);
+             } else {
+                DocumentInputStream dis = new DocumentInputStream((DocumentNode) entry);
+                int numBytes = dis.available();
+                byte[] data = new byte [numBytes];
+            dis.read(data);
+             }
+          }
        }
 
        private static InputStream openSampleStream(String sampleFileName) {