Browse Source

More 0 byte stream tests

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1681754 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_13_BETA1
Nick Burch 9 years ago
parent
commit
e191e05045

+ 8
- 3
src/java/org/apache/poi/poifs/property/DirectoryProperty.java View File

@@ -28,10 +28,8 @@ import java.util.Set;

/**
* 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 */
private List<Property> _children;
@@ -241,6 +239,13 @@ public class DirectoryProperty extends Property implements Parent { // TODO - fi
{
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

+ 0
- 2
src/java/org/apache/poi/poifs/property/RootProperty.java View File

@@ -22,8 +22,6 @@ import org.apache.poi.poifs.storage.SmallDocumentBlock;

/**
* Root property
*
* @author Marc Johnson (mjohnson at apache dot org)
*/
public final class RootProperty extends DirectoryProperty {
private static final String NAME = "Root Entry";

+ 32
- 0
src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSFileSystem.java View File

@@ -21,6 +21,7 @@ import static org.hamcrest.core.IsCollectionContaining.hasItem;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

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.storage.HeaderBlock;
import org.apache.poi.util.IOUtils;
import org.junit.Ignore;
import org.junit.Test;

/**
@@ -1306,6 +1308,36 @@ public final class TestNPOIFSFileSystem {
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
public void writeZeroLengthEntries() throws Exception {
NPOIFSFileSystem fs = new NPOIFSFileSystem();

BIN
test-data/poifs/only-zero-byte-streams.ole2 View File


Loading…
Cancel
Save