]> source.dussan.org Git - poi.git/commitdiff
Add some more NPOIFS write related tests, some of which is disabled as the functional...
authorNick Burch <nick@apache.org>
Thu, 19 May 2011 11:54:29 +0000 (11:54 +0000)
committerNick Burch <nick@apache.org>
Thu, 19 May 2011 11:54:29 +0000 (11:54 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1124693 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/poifs/property/NPropertyTable.java
src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java

index 36ded35789e39f86d5f4ca758cfc2793faac7d7b..f1d470eb48d0c48513808fadd324e5647e49ef51 100644 (file)
@@ -116,7 +116,9 @@ public final class NPropertyTable extends PropertyTableBase {
        // TODO - Use a streaming write
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        for(Property property : _properties) {
-          property.writeData(baos);
+          if(property != null) {
+             property.writeData(baos);
+          }
        }
        stream.updateContents(baos.toByteArray());
        
index e8f8a1f189ad010a303ea1debcd928943001b1cb..ba6d1c0c0d51f16a03a2dca11ab2a82b33bce37c 100644 (file)
@@ -32,6 +32,7 @@ import org.apache.poi.poifs.common.POIFSConstants;
 import org.apache.poi.poifs.property.NPropertyTable;
 import org.apache.poi.poifs.property.Property;
 import org.apache.poi.poifs.property.RootProperty;
+import org.apache.poi.poifs.storage.HeaderBlock;
 
 /**
  * Tests for the new NIO POIFSFileSystem implementation
@@ -437,16 +438,41 @@ public final class TestNPOIFSFileSystem extends TestCase {
          assertEquals(false, fs.getBATBlockAndIndex(237*128).getBlock().hasFreeSectors());
          fail("Should only be 237 BATs");
       } catch(IndexOutOfBoundsException e) {}
+      
+      
+      // Check the counts
+      int numBATs = 0;
+      int numXBATs = 0;
+      for(int i=0; i<237*128; i++) {
+         if(fs.getNextBlock(i) == POIFSConstants.FAT_SECTOR_BLOCK) {
+            numBATs++;
+         }
+         if(fs.getNextBlock(i) == POIFSConstants.DIFAT_SECTOR_BLOCK) {
+            numXBATs++;
+         }
+      }
+      if(1==2) {
+      // TODO Fix this
+      assertEquals(237, numBATs);
+      assertEquals(2, numXBATs);
+      }
 
       
-      // Write it out and read it back in again
-      // TODO
+      // Write it out
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      fs.writeFilesystem(baos);
       
       // Check the header is correct
-      // TODO
+      HeaderBlock header = new HeaderBlock(new ByteArrayInputStream(baos.toByteArray()));
+      if(1==2) {
+      // TODO Fix this
+      assertEquals(237, header.getBATCount());
+      assertEquals(2, header.getXBATCount());
       
       // Now check the filesystem sees it correct too
+      fs = new NPOIFSFileSystem(new ByteArrayInputStream(baos.toByteArray()));
       // TODO
+      }
    }
    
    /**