Author: nick
Date: Sat Apr 26 22:50:00 2014
New Revision: 1590319
URL: http://svn.apache.org/r1590319
Log:
More on the HPFS in-place NPOIFS write tests, and a note about what is still to
do for them
Modified:
poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java
Modified: poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java?rev=1590319&r1=1590318&r2=1590319&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java
(original)
+++ poi/trunk/src/java/org/apache/poi/poifs/nio/FileBackedDataSource.java Sat
Apr 26 22:50:00 2014
@@ -31,6 +31,10 @@ import org.apache.poi.util.IOUtils;
/**
* A POIFS {@link DataSource} backed by a File
+ *
+ * TODO - Return the ByteBuffers in such a way that in RW mode,
+ * changes to the buffer end up on the disk (will fix the HPSF TestWrite
+ * currently failing unit test when done)
*/
public class FileBackedDataSource extends DataSource {
private FileChannel channel;
Modified: poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java?rev=1590319&r1=1590318&r2=1590319&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hpsf/basic/TestWrite.java Sat Apr 26
22:50:00 2014
@@ -17,8 +17,10 @@
package org.apache.poi.hpsf.basic;
+import static org.hamcrest.core.IsEqual.equalTo;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -65,6 +67,7 @@ import org.apache.poi.poifs.filesystem.D
import org.apache.poi.poifs.filesystem.DocumentNode;
import org.apache.poi.poifs.filesystem.NDocumentInputStream;
import org.apache.poi.poifs.filesystem.NDocumentOutputStream;
+import org.apache.poi.poifs.filesystem.NPOIFSDocument;
import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.util.CodePageUtil;
@@ -830,16 +833,17 @@ public class TestWrite
// Open the copy in read/write mode
- fs = new NPOIFSFileSystem(copy);
+ fs = new NPOIFSFileSystem(copy, false);
root = fs.getRoot();
// Read the properties in there
sinfDoc =
(DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
+ dinfDoc =
(DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
+
sinf = (SummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(sinfDoc));
assertEquals(131077, sinf.getOSVersion());
- dinfDoc =
(DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
dinf = (DocumentSummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(dinfDoc));
assertEquals(131077, dinf.getOSVersion());
@@ -853,7 +857,45 @@ public class TestWrite
assertEquals(null, dinf.getManager());
- // Have them write themselves in-place with no changes
+ // Do an in-place replace via an InputStream
+ new NPOIFSDocument(sinfDoc).replaceContents(sinf.toInputStream());
+ new NPOIFSDocument(dinfDoc).replaceContents(dinf.toInputStream());
+
+
+ // Check it didn't get changed
+ sinfDoc =
(DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
+ dinfDoc =
(DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
+
+ sinf = (SummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(sinfDoc));
+ assertEquals(131077, sinf.getOSVersion());
+
+ dinf = (DocumentSummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(dinfDoc));
+ assertEquals(131077, dinf.getOSVersion());
+
+
+ // Start again!
+ fs.close();
+ inp = _samples.openResourceAsStream("TestShiftJIS.doc");
+ out = new FileOutputStream(copy);
+ IOUtils.copy(inp, out);
+ inp.close();
+ out.close();
+
+ fs = new NPOIFSFileSystem(copy, false);
+ root = fs.getRoot();
+
+ // Read the properties in once more
+ sinfDoc =
(DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
+ dinfDoc =
(DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
+
+ sinf = (SummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(sinfDoc));
+ assertEquals(131077, sinf.getOSVersion());
+
+ dinf = (DocumentSummaryInformation)PropertySetFactory.create(new
NDocumentInputStream(dinfDoc));
+ assertEquals(131077, dinf.getOSVersion());
+
+
+ // Have them write themselves in-place with no changes, as an
OutputStream
sinf.write(new NDocumentOutputStream(sinfDoc));
dinf.write(new NDocumentOutputStream(dinfDoc));
@@ -868,7 +910,10 @@ public class TestWrite
sinfDoc =
(DocumentNode)root.getEntry(SummaryInformation.DEFAULT_STREAM_NAME);
dinfDoc =
(DocumentNode)root.getEntry(DocumentSummaryInformation.DEFAULT_STREAM_NAME);
- // TODO
+ byte[] sinfData = IOUtils.toByteArray(new
NDocumentInputStream(sinfDoc));
+ byte[] dinfData = IOUtils.toByteArray(new
NDocumentInputStream(dinfDoc));
+ assertThat(sinfBytes.toByteArray(), equalTo(sinfData));
+ assertThat(dinfBytes.toByteArray(), equalTo(dinfData));
// Read back in as-is
Modified:
poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java?rev=1590319&r1=1590318&r2=1590319&view=diff
==============================================================================
---
poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java
(original)
+++
poi/trunk/src/testcases/org/apache/poi/poifs/filesystem/TestNPOIFSMiniStore.java
Sat Apr 26 22:50:00 2014
@@ -28,6 +28,7 @@ import org.apache.poi.poifs.common.POIFS
/**
* Tests for the Mini Store in the NIO POIFS
*/
+@SuppressWarnings("resource")
public final class TestNPOIFSMiniStore extends TestCase {
private static final POIDataSamples _inst =
POIDataSamples.getPOIFSInstance();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]