]> source.dussan.org Git - poi.git/commitdiff
Verify that bug 61294 is fixed now, add some more coverage for IOUtils in general
authorDominik Stadler <centic@apache.org>
Fri, 25 Aug 2017 11:51:18 +0000 (11:51 +0000)
committerDominik Stadler <centic@apache.org>
Fri, 25 Aug 2017 11:51:18 +0000 (11:51 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1806162 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/util/IOUtils.java
src/testcases/org/apache/poi/util/TestIOUtils.java

index b256591fa07b929cea6b6e20b4f990815b45c6c3..c2be5786386b692eee01483a9bba51806cf9b99e 100644 (file)
@@ -206,7 +206,7 @@ public final class IOUtils {
      *
      * @param doc  a writeable document to write to the output stream
      * @param out  the output stream that the document is written to
-     * @throws IOException 
+     * @throws IOException thrown on errors writing to the stream
      */
     public static void write(POIDocument doc, OutputStream out) throws IOException {
         try {
@@ -225,7 +225,7 @@ public final class IOUtils {
      *
      * @param doc  a writeable document to write to the output stream
      * @param out  the output stream that the document is written to
-     * @throws IOException 
+     * @throws IOException thrown on errors writing to the stream
      */
     public static void write(Workbook doc, OutputStream out) throws IOException {
         try {
@@ -245,7 +245,7 @@ public final class IOUtils {
      *
      * @param doc  a writeable and closeable document to write to the output stream, then close
      * @param out  the output stream that the document is written to
-     * @throws IOException 
+     * @throws IOException thrown on errors writing to the stream
      */
     public static void writeAndClose(POIDocument doc, OutputStream out) throws IOException {
         try {
@@ -264,7 +264,7 @@ public final class IOUtils {
      *
      * @param doc  a writeable and closeable document to write to the output file, then close
      * @param out  the output file that the document is written to
-     * @throws IOException 
+     * @throws IOException thrown on errors writing to the stream
      */
     public static void writeAndClose(POIDocument doc, File out) throws IOException {
         try {
@@ -282,7 +282,7 @@ public final class IOUtils {
      * This function exists for Java 6 code.
      *
      * @param doc  a writeable document to write in-place
-     * @throws IOException 
+     * @throws IOException thrown on errors writing to the file
      */
     public static void writeAndClose(POIDocument doc) throws IOException {
         try {
index 825e35aa8b4c82b46fba49edd4bf8d5ba545dece..4a08a32e07c7a9c22aaa7a1d2430b3ae0b1a3f61 100644 (file)
@@ -17,6 +17,7 @@
 
 package org.apache.poi.util;
 
+import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
 
 import java.io.ByteArrayInputStream;
@@ -27,8 +28,11 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.PushbackInputStream;
+import java.nio.ByteBuffer;
 import java.util.Random;
 
+import org.apache.poi.EmptyFileException;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Test;
@@ -55,9 +59,57 @@ public final class TestIOUtils {
 
     @AfterClass
     public static void tearDown() throws IOException {
+        //noinspection ResultOfMethodCallIgnored
         TMP.delete();
     }
 
+    @Test
+    public void testPeekFirst8Bytes() throws Exception {
+        assertArrayEquals("01234567".getBytes("UTF-8"),
+                IOUtils.peekFirst8Bytes(new ByteArrayInputStream("0123456789".getBytes("UTF-8"))));
+    }
+
+    @Test
+    public void testPeekFirst8BytesWithPushbackInputStream() throws Exception {
+        assertArrayEquals("01234567".getBytes("UTF-8"),
+                IOUtils.peekFirst8Bytes(new PushbackInputStream(new ByteArrayInputStream("0123456789".getBytes("UTF-8")), 8)));
+    }
+
+    @Test
+    public void testPeekFirst8BytesTooLessAvailable() throws Exception {
+        assertArrayEquals(new byte[] { 1, 2, 3, 0, 0, 0, 0, 0},
+                IOUtils.peekFirst8Bytes(new ByteArrayInputStream(new byte[] { 1, 2, 3})));
+    }
+
+    @Test(expected = EmptyFileException.class)
+    public void testPeekFirst8BytesEmpty() throws Exception {
+        IOUtils.peekFirst8Bytes(new ByteArrayInputStream(new byte[] {}));
+    }
+
+    @Test
+    public void testToByteArray() throws Exception {
+        assertArrayEquals(new byte[] { 1, 2, 3},
+                IOUtils.toByteArray(new ByteArrayInputStream(new byte[] { 1, 2, 3})));
+    }
+
+    @Test(expected = IOException.class)
+    public void testToByteArrayToSmall() throws Exception {
+        assertArrayEquals(new byte[] { 1, 2, 3},
+                IOUtils.toByteArray(new ByteArrayInputStream(new byte[] { 1, 2, 3}), 10));
+    }
+
+    @Test
+    public void testToByteArrayByteBuffer() throws Exception {
+        assertArrayEquals(new byte[] { 1, 2, 3},
+                IOUtils.toByteArray(ByteBuffer.wrap(new byte[]{1, 2, 3}), 10));
+    }
+
+    @Test
+    public void testToByteArrayByteBufferToSmall() throws Exception {
+        assertArrayEquals(new byte[] { 1, 2, 3, 4, 5, 6, 7},
+                IOUtils.toByteArray(ByteBuffer.wrap(new byte[]{1, 2, 3, 4, 5, 6, 7}), 3));
+    }
+
     @Test
     public void testSkipFully() throws IOException {
         InputStream is =  new FileInputStream(TMP);
@@ -90,6 +142,11 @@ public final class TestIOUtils {
         assertEquals("length: "+LENGTH, LENGTH, skipped);
     }
 
+    @Test
+    public void testSkipFullyBug61294() throws IOException {
+        IOUtils.skipFully(new ByteArrayInputStream(new byte[0]), 1);
+    }
+
     @Test
     public void testZeroByte() throws IOException {
         long skipped = IOUtils.skipFully((new ByteArrayInputStream(new byte[0])), 100);
@@ -105,7 +162,7 @@ public final class TestIOUtils {
     @Test(expected = IllegalArgumentException.class)
     public void testSkipNegative() throws IOException {
         InputStream is =  new FileInputStream(TMP);
-        long skipped = IOUtils.skipFully(is, -1);
+        IOUtils.skipFully(is, -1);
     }
 
     @Test