More 0 byte stream tests

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681754 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2015-05-26 13:41:29 +00:00
parent 8cf9eaa685
commit e579b78672
4 changed files with 40 additions and 5 deletions

View File

@ -28,10 +28,8 @@ import java.util.Set;
/** /**
* Directory property * Directory property
*
* @author Marc Johnson (mjohnson at apache dot org)
*/ */
public class DirectoryProperty extends Property implements Parent { // TODO - fix instantiable superclass public class DirectoryProperty extends Property implements Parent, Iterable<Property> { // TODO - fix instantiable superclass
/** List of Property instances */ /** List of Property instances */
private List<Property> _children; private List<Property> _children;
@ -241,6 +239,13 @@ public class DirectoryProperty extends Property implements Parent { // TODO - fi
{ {
return _children.iterator(); return _children.iterator();
} }
/**
* Get an iterator over the children of this Parent, alias for
* {@link #getChildren()} which supports foreach use
*/
public Iterator<Property> iterator() {
return getChildren();
}
/** /**
* Add a new child to the collection of children * Add a new child to the collection of children

View File

@ -22,8 +22,6 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock;
/** /**
* Root property * Root property
*
* @author Marc Johnson (mjohnson at apache dot org)
*/ */
public final class RootProperty extends DirectoryProperty { public final class RootProperty extends DirectoryProperty {
private static final String NAME = "Root Entry"; private static final String NAME = "Root Entry";

View File

@ -21,6 +21,7 @@ import static org.hamcrest.core.IsCollectionContaining.hasItem;
import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat; import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
@ -41,6 +42,7 @@ import org.apache.poi.poifs.property.Property;
import org.apache.poi.poifs.property.RootProperty; import org.apache.poi.poifs.property.RootProperty;
import org.apache.poi.poifs.storage.HeaderBlock; import org.apache.poi.poifs.storage.HeaderBlock;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
/** /**
@ -1306,6 +1308,36 @@ public final class TestNPOIFSFileSystem {
assertContentsMatches(main4106, normDoc); assertContentsMatches(main4106, normDoc);
} }
@Test
public void readZeroLengthEntries() throws Exception {
NPOIFSFileSystem fs = new NPOIFSFileSystem(_inst.getFile("only-zero-byte-streams.ole2"));
DirectoryNode testDir = fs.getRoot();
assertEquals(3, testDir.getEntryCount());
DocumentEntry entry;
entry = (DocumentEntry)testDir.getEntry("test-zero-1");
assertNotNull(entry);
assertEquals(0, entry.getSize());
entry = (DocumentEntry)testDir.getEntry("test-zero-2");
assertNotNull(entry);
assertEquals(0, entry.getSize());
entry = (DocumentEntry)testDir.getEntry("test-zero-3");
assertNotNull(entry);
assertEquals(0, entry.getSize());
// Check properties, all have zero length, no blocks
NPropertyTable props = fs._get_property_table();
assertEquals(POIFSConstants.END_OF_CHAIN, props.getRoot().getStartBlock());
for (Property prop : props.getRoot()) {
assertEquals("test-zero-", prop.getName().substring(0, 10));
assertEquals(POIFSConstants.END_OF_CHAIN, prop.getStartBlock());
}
}
// TODO Should these have a mini-sbat entry or not?
// TODO Is the reading of zero-length properties exactly correct?
@Test @Test
public void writeZeroLengthEntries() throws Exception { public void writeZeroLengthEntries() throws Exception {
NPOIFSFileSystem fs = new NPOIFSFileSystem(); NPOIFSFileSystem fs = new NPOIFSFileSystem();

Binary file not shown.