Make the opening code generic
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1675700 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d540ba43cc
commit
22fa817fcc
@ -17,7 +17,9 @@
|
|||||||
|
|
||||||
package org.apache.poi.poifs.filesystem;
|
package org.apache.poi.poifs.filesystem;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
@ -27,26 +29,40 @@ import org.apache.poi.POIDataSamples;
|
|||||||
* Tests bugs across both POIFSFileSystem and NPOIFSFileSystem
|
* Tests bugs across both POIFSFileSystem and NPOIFSFileSystem
|
||||||
*/
|
*/
|
||||||
public final class TestFileSystemBugs extends TestCase {
|
public final class TestFileSystemBugs extends TestCase {
|
||||||
|
protected static POIDataSamples _samples = POIDataSamples.getPOIFSInstance();
|
||||||
|
|
||||||
|
protected List<NPOIFSFileSystem> openedFSs;
|
||||||
|
protected void tearDown() throws Exception {
|
||||||
|
if (openedFSs != null && !openedFSs.isEmpty()) {
|
||||||
|
for (NPOIFSFileSystem fs : openedFSs) {
|
||||||
|
try {
|
||||||
|
fs.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.err.println("Error closing FS: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
openedFSs = null;
|
||||||
|
}
|
||||||
|
protected DirectoryNode[] openSample(String name) throws Exception {
|
||||||
|
POIFSFileSystem ofs = new POIFSFileSystem(
|
||||||
|
_samples.openResourceAsStream(name));
|
||||||
|
NPOIFSFileSystem nfs = new NPOIFSFileSystem(
|
||||||
|
_samples.openResourceAsStream(name));
|
||||||
|
|
||||||
|
if (openedFSs == null) openedFSs = new ArrayList<NPOIFSFileSystem>();
|
||||||
|
openedFSs.add(nfs);
|
||||||
|
|
||||||
|
return new DirectoryNode[] { ofs.getRoot(), nfs.getRoot() };
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that we can open files that come via Lotus notes.
|
* Test that we can open files that come via Lotus notes.
|
||||||
* These have a top level directory without a name....
|
* These have a top level directory without a name....
|
||||||
*/
|
*/
|
||||||
public void testNotesOLE2Files() throws Exception {
|
public void testNotesOLE2Files() throws Exception {
|
||||||
POIDataSamples _samples = POIDataSamples.getPOIFSInstance();
|
|
||||||
|
|
||||||
// Open the file up with the two FileSystems
|
|
||||||
@SuppressWarnings("resource")
|
|
||||||
DirectoryNode[] roots = new DirectoryNode[] {
|
|
||||||
new POIFSFileSystem(
|
|
||||||
_samples.openResourceAsStream("Notes.ole2")
|
|
||||||
).getRoot(),
|
|
||||||
new NPOIFSFileSystem(
|
|
||||||
_samples.openResourceAsStream("Notes.ole2")
|
|
||||||
).getRoot()
|
|
||||||
};
|
|
||||||
|
|
||||||
// Check the contents
|
// Check the contents
|
||||||
for (DirectoryNode root : roots) {
|
for (DirectoryNode root : openSample("Notes.ole2")) {
|
||||||
assertEquals(1, root.getEntryCount());
|
assertEquals(1, root.getEntryCount());
|
||||||
|
|
||||||
Entry entry = root.getEntries().next();
|
Entry entry = root.getEntries().next();
|
||||||
@ -69,10 +85,6 @@ public final class TestFileSystemBugs extends TestCase {
|
|||||||
entry = it.next();
|
entry = it.next();
|
||||||
assertEquals(true, entry.isDocumentEntry());
|
assertEquals(true, entry.isDocumentEntry());
|
||||||
assertEquals("\u0001CompObj", entry.getName());
|
assertEquals("\u0001CompObj", entry.getName());
|
||||||
|
|
||||||
// Tidy
|
|
||||||
if (root.getNFileSystem() != null)
|
|
||||||
root.getNFileSystem().close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user