This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git


The following commit(s) were added to refs/heads/master by this push:
     new 533944f  Clean up tests. Javadocs.
533944f is described below

commit 533944f431e31fe281aea99a36404634111adce6
Author: Gary Gregory <gardgreg...@gmail.com>
AuthorDate: Fri Apr 5 14:24:47 2019 -0400

    Clean up tests. Javadocs.
---
 src/main/java/org/apache/commons/io/FileUtils.java |   6 -
 .../apache/commons/io/output/NullOutputStream.java |   2 +-
 .../commons/io/input/BOMInputStreamTest.java       | 551 +++++++++++----------
 .../apache/commons/io/input/BoundedReaderTest.java | 191 ++++---
 .../io/input/CharSequenceInputStreamTest.java      |  19 +-
 .../commons/io/input/CharSequenceReaderTest.java   |  79 +--
 .../io/input/ClassLoaderObjectInputStreamTest.java |  86 ++--
 .../commons/io/input/ClosedInputStreamTest.java    |   6 +-
 .../commons/io/input/CountingInputStreamTest.java  | 156 +++---
 9 files changed, 545 insertions(+), 551 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/FileUtils.java 
b/src/main/java/org/apache/commons/io/FileUtils.java
index 2089e67..5a0fb76 100644
--- a/src/main/java/org/apache/commons/io/FileUtils.java
+++ b/src/main/java/org/apache/commons/io/FileUtils.java
@@ -31,7 +31,6 @@ import java.math.BigInteger;
 import java.net.URL;
 import java.net.URLConnection;
 import java.nio.ByteBuffer;
-import java.nio.channels.FileChannel;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
@@ -111,11 +110,6 @@ public class FileUtils {
     public static final BigInteger ONE_MB_BI = ONE_KB_BI.multiply(ONE_KB_BI);
 
     /**
-     * The file copy buffer size (30 MB)
-     */
-    private static final long FILE_COPY_BUFFER_SIZE = ONE_MB * 30;
-
-    /**
      * The number of bytes in a gigabyte.
      */
     public static final long ONE_GB = ONE_KB * ONE_MB;
diff --git a/src/main/java/org/apache/commons/io/output/NullOutputStream.java 
b/src/main/java/org/apache/commons/io/output/NullOutputStream.java
index f412131..90a996a 100644
--- a/src/main/java/org/apache/commons/io/output/NullOutputStream.java
+++ b/src/main/java/org/apache/commons/io/output/NullOutputStream.java
@@ -24,7 +24,7 @@ import java.io.OutputStream;
  * <p>
  * This output stream has no destination (file/socket etc.) and all
  * bytes written to it are ignored and lost.
- *</p>
+ * </p>
  * @version $Id$
  */
 public class NullOutputStream extends OutputStream {
diff --git a/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java 
b/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
index 20b7e0d..8a9f4cd 100644
--- a/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
@@ -197,177 +197,177 @@ public class BOMInputStreamTest {
     @Test
     public void testAvailableWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        assertEquals(7, in.available());
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            assertEquals(7, in.available());
+        }
     }
 
     @Test
     public void testAvailableWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        assertEquals(4, in.available());
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertEquals(4, in.available());
+        }
     }
 
     @Test
     // this is here for coverage
     public void testClose() throws Exception {
-        final ExpectCloseInputStream del = new ExpectCloseInputStream();
-        final InputStream in = new BOMInputStream(del);
-
-        in.close();
-        del.assertCloseCalled();
-        del.close();
+        try (final ExpectCloseInputStream del = new ExpectCloseInputStream()) {
+            try (final InputStream in = new BOMInputStream(del)) {
+                // nothing
+            }
+            del.assertCloseCalled();
+        }
     }
 
     @Test
     public void testEmptyBufferWithBOM() throws Exception {
         final byte[] data = new byte[] {};
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        final byte[] buf = new byte[1024];
-        assertEquals(-1, in.read(buf));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            final byte[] buf = new byte[1024];
+            assertEquals(-1, in.read(buf));
+        }
     }
 
     @Test
     public void testEmptyBufferWithoutBOM() throws Exception {
         final byte[] data = new byte[] {};
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        final byte[] buf = new byte[1024];
-        assertEquals(-1, in.read(buf));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            final byte[] buf = new byte[1024];
+            assertEquals(-1, in.read(buf));
+        }
     }
 
     @Test
     public void testGetBOMFirstThenRead() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true));
-        assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+        }
     }
 
     @Test
     public void testGetBOMFirstThenReadInclude() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), true);
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
-        assertEquals(0xEF, in.read());
-        assertEquals(0xBB, in.read());
-        assertEquals(0xBF, in.read());
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), true)) {
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
+            assertEquals(0xEF, in.read());
+            assertEquals(0xBB, in.read());
+            assertEquals(0xBF, in.read());
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+        }
     }
 
     @Test
     public void testLargeBufferWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        final byte[] buf = new byte[1024];
-        assertData(data, buf, in.read(buf));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            final byte[] buf = new byte[1024];
+            assertData(data, buf, in.read(buf));
+        }
     }
 
     @Test
     public void testLargeBufferWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        final byte[] buf = new byte[1024];
-        assertData(data, buf, in.read(buf));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            final byte[] buf = new byte[1024];
+            assertData(data, buf, in.read(buf));
+        }
     }
 
     @Test
     public void testLeadingNonBOMBufferedRead() throws Exception {
         final byte[] data = new byte[] { (byte) 0xEF, (byte) 0xAB, (byte) 0xCD 
};
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        final byte[] buf = new byte[1024];
-        assertData(data, buf, in.read(buf));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            final byte[] buf = new byte[1024];
+            assertData(data, buf, in.read(buf));
+        }
     }
 
     @Test
     public void testLeadingNonBOMSingleRead() throws Exception {
         final byte[] data = new byte[] { (byte) 0xEF, (byte) 0xAB, (byte) 0xCD 
};
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        assertEquals(0xEF, in.read());
-        assertEquals(0xAB, in.read());
-        assertEquals(0xCD, in.read());
-        assertEquals(-1, in.read());
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertEquals(0xEF, in.read());
+            assertEquals(0xAB, in.read());
+            assertEquals(0xCD, in.read());
+            assertEquals(-1, in.read());
+        }
     }
 
     @Test
     public void testMarkResetAfterReadWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        assertTrue(in.markSupported());
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            assertTrue(in.markSupported());
 
-        in.read();
-        in.mark(10);
+            in.read();
+            in.mark(10);
 
-        in.read();
-        in.read();
-        in.reset();
-        assertEquals('B', in.read());
-        in.close();
+            in.read();
+            in.read();
+            in.reset();
+            assertEquals('B', in.read());
+        }
     }
 
     @Test
     public void testMarkResetAfterReadWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        assertTrue(in.markSupported());
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertTrue(in.markSupported());
 
-        in.read();
-        in.mark(10);
+            in.read();
+            in.mark(10);
 
-        in.read();
-        in.read();
-        in.reset();
-        assertEquals('B', in.read());
-        in.close();
+            in.read();
+            in.read();
+            in.reset();
+            assertEquals('B', in.read());
+        }
     }
 
     @Test
     public void testMarkResetBeforeReadWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        assertTrue(in.markSupported());
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            assertTrue(in.markSupported());
 
-        in.mark(10);
+            in.mark(10);
 
-        in.read();
-        in.read();
-        in.reset();
-        assertEquals('A', in.read());
-        in.close();
+            in.read();
+            in.read();
+            in.reset();
+            assertEquals('A', in.read());
+        }
     }
 
     @Test
     public void testMarkResetBeforeReadWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        assertTrue(in.markSupported());
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertTrue(in.markSupported());
 
-        in.mark(10);
+            in.mark(10);
 
-        in.read();
-        in.read();
-        in.reset();
-        assertEquals('A', in.read());
-        in.close();
+            in.read();
+            in.read();
+            in.reset();
+            assertEquals('A', in.read());
+        }
     }
 
     @Test
@@ -394,25 +394,25 @@ public class BOMInputStreamTest {
     @Test
     public void testReadEmpty() throws Exception {
         final byte[] data = new byte[] {};
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false));
-        assertEquals(-1, in.read());
-        assertFalse("hasBOM()", in.hasBOM());
-        assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertNull("getBOM", in.getBOM());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertEquals(-1, in.read());
+            assertFalse("hasBOM()", in.hasBOM());
+            assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertNull("getBOM", in.getBOM());
+        }
     }
 
     @Test
     public void testReadSmall() throws Exception {
         final byte[] data = new byte[] { 'A', 'B' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false));
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals(-1, in.read());
-        assertFalse("hasBOM()", in.hasBOM());
-        assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertNull("getBOM", in.getBOM());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals(-1, in.read());
+            assertFalse("hasBOM()", in.hasBOM());
+            assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertNull("getBOM", in.getBOM());
+        }
     }
 
     @Test
@@ -428,174 +428,178 @@ public class BOMInputStreamTest {
     @Test
     public void testReadWithBOMInclude() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), true);
-        assertEquals(0xEF, in.read());
-        assertEquals(0xBB, in.read());
-        assertEquals(0xBF, in.read());
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), true)) {
+            assertEquals(0xEF, in.read());
+            assertEquals(0xBB, in.read());
+            assertEquals(0xBF, in.read());
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
+        }
     }
 
     @Test
     public void testReadWithBOMUtf16Be() throws Exception {
         final byte[] data = "ABC".getBytes(StandardCharsets.UTF_16BE);
-        final BOMInputStream in = new 
BOMInputStream(createUtf16BeDataStream(data, true), ByteOrderMark.UTF_16BE);
-        assertEquals(0, in.read());
-        assertEquals('A', in.read());
-        assertEquals(0, in.read());
-        assertEquals('B', in.read());
-        assertEquals(0, in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-16BE)", in.hasBOM(ByteOrderMark.UTF_16BE));
-        assertEquals("getBOM", ByteOrderMark.UTF_16BE, in.getBOM());
-        try {
-            in.hasBOM(ByteOrderMark.UTF_16LE);
-            fail("Expected IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            // expected - not configured for UTF-16LE
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf16BeDataStream(data, true),
+                ByteOrderMark.UTF_16BE)) {
+            assertEquals(0, in.read());
+            assertEquals('A', in.read());
+            assertEquals(0, in.read());
+            assertEquals('B', in.read());
+            assertEquals(0, in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-16BE)", in.hasBOM(ByteOrderMark.UTF_16BE));
+            assertEquals("getBOM", ByteOrderMark.UTF_16BE, in.getBOM());
+            try {
+                in.hasBOM(ByteOrderMark.UTF_16LE);
+                fail("Expected IllegalArgumentException");
+            } catch (final IllegalArgumentException e) {
+                // expected - not configured for UTF-16LE
+            }
         }
-        in.close();
     }
 
     @Test
     public void testReadWithBOMUtf16Le() throws Exception {
         final byte[] data = "ABC".getBytes(StandardCharsets.UTF_16LE);
-        final BOMInputStream in = new 
BOMInputStream(createUtf16LeDataStream(data, true), ByteOrderMark.UTF_16LE);
-        assertEquals('A', in.read());
-        assertEquals(0, in.read());
-        assertEquals('B', in.read());
-        assertEquals(0, in.read());
-        assertEquals('C', in.read());
-        assertEquals(0, in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-16LE)", in.hasBOM(ByteOrderMark.UTF_16LE));
-        assertEquals("getBOM", ByteOrderMark.UTF_16LE, in.getBOM());
-        try {
-            in.hasBOM(ByteOrderMark.UTF_16BE);
-            fail("Expected IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            // expected - not configured for UTF-16BE
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf16LeDataStream(data, true),
+                ByteOrderMark.UTF_16LE)) {
+            assertEquals('A', in.read());
+            assertEquals(0, in.read());
+            assertEquals('B', in.read());
+            assertEquals(0, in.read());
+            assertEquals('C', in.read());
+            assertEquals(0, in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-16LE)", in.hasBOM(ByteOrderMark.UTF_16LE));
+            assertEquals("getBOM", ByteOrderMark.UTF_16LE, in.getBOM());
+            try {
+                in.hasBOM(ByteOrderMark.UTF_16BE);
+                fail("Expected IllegalArgumentException");
+            } catch (final IllegalArgumentException e) {
+                // expected - not configured for UTF-16BE
+            }
         }
-        in.close();
     }
 
     @Test
     public void testReadWithBOMUtf32Be() throws Exception {
         Assume.assumeTrue(Charset.isSupported("UTF_32BE"));
         final byte[] data = "ABC".getBytes("UTF_32BE");
-        final BOMInputStream in = new 
BOMInputStream(createUtf32BeDataStream(data, true), ByteOrderMark.UTF_32BE);
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals('A', in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals('B', in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-32BE)", in.hasBOM(ByteOrderMark.UTF_32BE));
-        assertEquals("getBOM", ByteOrderMark.UTF_32BE, in.getBOM());
-        try {
-            in.hasBOM(ByteOrderMark.UTF_32LE);
-            fail("Expected IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            // expected - not configured for UTF-32LE
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf32BeDataStream(data, true),
+                ByteOrderMark.UTF_32BE)) {
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals('A', in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals('B', in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-32BE)", in.hasBOM(ByteOrderMark.UTF_32BE));
+            assertEquals("getBOM", ByteOrderMark.UTF_32BE, in.getBOM());
+            try {
+                in.hasBOM(ByteOrderMark.UTF_32LE);
+                fail("Expected IllegalArgumentException");
+            } catch (final IllegalArgumentException e) {
+                // expected - not configured for UTF-32LE
+            }
         }
-        in.close();
     }
 
     @Test
     public void testReadWithBOMUtf32Le() throws Exception {
         Assume.assumeTrue(Charset.isSupported("UTF_32LE"));
         final byte[] data = "ABC".getBytes("UTF_32LE");
-        final BOMInputStream in = new 
BOMInputStream(createUtf32LeDataStream(data, true), ByteOrderMark.UTF_32LE);
-        assertEquals('A', in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals('B', in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals('C', in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(0, in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-32LE)", in.hasBOM(ByteOrderMark.UTF_32LE));
-        assertEquals("getBOM", ByteOrderMark.UTF_32LE, in.getBOM());
-        try {
-            in.hasBOM(ByteOrderMark.UTF_32BE);
-            fail("Expected IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            // expected - not configured for UTF-32BE
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf32LeDataStream(data, true),
+                ByteOrderMark.UTF_32LE)) {
+            assertEquals('A', in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals('B', in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals('C', in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(0, in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-32LE)", in.hasBOM(ByteOrderMark.UTF_32LE));
+            assertEquals("getBOM", ByteOrderMark.UTF_32LE, in.getBOM());
+            try {
+                in.hasBOM(ByteOrderMark.UTF_32BE);
+                fail("Expected IllegalArgumentException");
+            } catch (final IllegalArgumentException e) {
+                // expected - not configured for UTF-32BE
+            }
         }
-        in.close();
     }
 
     @Test
     public void testReadWithBOMUtf8() throws Exception {
         final byte[] data = "ABC".getBytes(StandardCharsets.UTF_8);
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), ByteOrderMark.UTF_8);
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
-        try {
-            in.hasBOM(ByteOrderMark.UTF_16BE);
-            fail("Expected IllegalArgumentException");
-        } catch (final IllegalArgumentException e) {
-            // expected - not configured for UTF-16BE
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), ByteOrderMark.UTF_8)) {
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
+            try {
+                in.hasBOM(ByteOrderMark.UTF_16BE);
+                fail("Expected IllegalArgumentException");
+            } catch (final IllegalArgumentException e) {
+                // expected - not configured for UTF-16BE
+            }
         }
-        in.close();
     }
 
     @Test
     public void testReadWithMultipleBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true),
-                                            ByteOrderMark.UTF_16BE, 
ByteOrderMark.UTF_8);
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertTrue("hasBOM()", in.hasBOM());
-        assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertFalse("hasBOM(UTF-16BE)", in.hasBOM(ByteOrderMark.UTF_16BE));
-        assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, true), ByteOrderMark.UTF_16BE,
+                ByteOrderMark.UTF_8)) {
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertTrue("hasBOM()", in.hasBOM());
+            assertTrue("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertFalse("hasBOM(UTF-16BE)", in.hasBOM(ByteOrderMark.UTF_16BE));
+            assertEquals("getBOM", ByteOrderMark.UTF_8, in.getBOM());
+        }
     }
 
     @Test
     public void testReadWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false));
-        assertEquals('A', in.read());
-        assertEquals('B', in.read());
-        assertEquals('C', in.read());
-        assertEquals(-1, in.read());
-        assertFalse("hasBOM()", in.hasBOM());
-        assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
-        assertNull("getBOM", in.getBOM());
-        in.close();
+        try (final BOMInputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            assertEquals('A', in.read());
+            assertEquals('B', in.read());
+            assertEquals('C', in.read());
+            assertEquals(-1, in.read());
+            assertFalse("hasBOM()", in.hasBOM());
+            assertFalse("hasBOM(UTF-8)", in.hasBOM(ByteOrderMark.UTF_8));
+            assertNull("getBOM", in.getBOM());
+        }
     }
 
     @Test
@@ -680,76 +684,75 @@ public class BOMInputStreamTest {
     @Test
     public void testSkipWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        in.skip(2L);
-        assertEquals('C', in.read());
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            in.skip(2L);
+            assertEquals('C', in.read());
+        }
     }
 
     @Test
     public void testSkipWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C', 'D' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        in.skip(2L);
-        assertEquals('C', in.read());
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            in.skip(2L);
+            assertEquals('C', in.read());
+        }
     }
 
 
     @Test
     public void skipReturnValueWithBom() throws IOException {
-        final byte[] baseData = new byte[]{(byte) 0x31, (byte) 0x32, (byte) 
0x33};
-        final BOMInputStream is1 = new 
BOMInputStream(createUtf8DataStream(baseData, true));
-        assertEquals(2, is1.skip(2));
-        assertEquals((byte) 0x33, is1.read());
-        is1.close();
+        final byte[] baseData = new byte[] { (byte) 0x31, (byte) 0x32, (byte) 
0x33 };
+        try (final BOMInputStream is1 = new 
BOMInputStream(createUtf8DataStream(baseData, true))) {
+            assertEquals(2, is1.skip(2));
+            assertEquals((byte) 0x33, is1.read());
+        }
     }
 
     @Test
     public void skipReturnValueWithoutBom() throws IOException {
-        final byte[] baseData = new byte[]{(byte) 0x31, (byte) 0x32, (byte) 
0x33};
-        final BOMInputStream is2 = new 
BOMInputStream(createUtf8DataStream(baseData, false));
-        assertEquals(2, is2.skip(2)); // IO-428
-        assertEquals((byte) 0x33, is2.read());
-        is2.close();
+        final byte[] baseData = new byte[] { (byte) 0x31, (byte) 0x32, (byte) 
0x33 };
+        try (final BOMInputStream is2 = new 
BOMInputStream(createUtf8DataStream(baseData, false))) {
+            assertEquals(2, is2.skip(2)); // IO-428
+            assertEquals((byte) 0x33, is2.read());
+        }
     }
 
     @Test
     public void testSmallBufferWithBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
true));
-        final byte[] buf = new byte[1024];
-        assertData(new byte[] { 'A', 'B' }, buf, in.read(buf, 0, 2));
-        assertData(new byte[] { 'C' }, buf, in.read(buf, 0, 2));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, true))) {
+            final byte[] buf = new byte[1024];
+            assertData(new byte[] { 'A', 'B' }, buf, in.read(buf, 0, 2));
+            assertData(new byte[] { 'C' }, buf, in.read(buf, 0, 2));
+        }
     }
 
     @Test
     public void testSmallBufferWithoutBOM() throws Exception {
         final byte[] data = new byte[] { 'A', 'B', 'C' };
-        final InputStream in = new BOMInputStream(createUtf8DataStream(data, 
false));
-        final byte[] buf = new byte[1024];
-        assertData(new byte[] { 'A', 'B' }, buf, in.read(buf, 0, 2));
-        assertData(new byte[] { 'C' }, buf, in.read(buf, 0, 2));
-        in.close();
+        try (final InputStream in = new 
BOMInputStream(createUtf8DataStream(data, false))) {
+            final byte[] buf = new byte[1024];
+            assertData(new byte[] { 'A', 'B' }, buf, in.read(buf, 0, 2));
+            assertData(new byte[] { 'C' }, buf, in.read(buf, 0, 2));
+        }
     }
 
     @Test
     // make sure that our support code works as expected
     public void testSupportCode() throws Exception {
-        final InputStream in = createUtf8DataStream(new byte[] { 'A', 'B' }, 
true);
-        final byte[] buf = new byte[1024];
-        final int len = in.read(buf);
-        assertEquals(5, len);
-        assertEquals(0xEF, buf[0] & 0xFF);
-        assertEquals(0xBB, buf[1] & 0xFF);
-        assertEquals(0xBF, buf[2] & 0xFF);
-        assertEquals('A', buf[3] & 0xFF);
-        assertEquals('B', buf[4] & 0xFF);
-
-        assertData(
-                new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF, 'A', 'B' },
-                buf, len);
+        try (final InputStream in = createUtf8DataStream(new byte[] { 'A', 'B' 
}, true)) {
+            final byte[] buf = new byte[1024];
+            final int len = in.read(buf);
+            assertEquals(5, len);
+            assertEquals(0xEF, buf[0] & 0xFF);
+            assertEquals(0xBB, buf[1] & 0xFF);
+            assertEquals(0xBF, buf[2] & 0xFF);
+            assertEquals('A', buf[3] & 0xFF);
+            assertEquals('B', buf[4] & 0xFF);
+
+            assertData(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF, 
'A', 'B' }, buf, len);
+        }
     }
 
     private boolean jvmAndSaxBothSupportCharset(final String charSetName) 
throws ParserConfigurationException, SAXException, IOException {
diff --git a/src/test/java/org/apache/commons/io/input/BoundedReaderTest.java 
b/src/test/java/org/apache/commons/io/input/BoundedReaderTest.java
index 5401168..9a5b244 100644
--- a/src/test/java/org/apache/commons/io/input/BoundedReaderTest.java
+++ b/src/test/java/org/apache/commons/io/input/BoundedReaderTest.java
@@ -37,149 +37,148 @@ public class BoundedReaderTest
 
     @Test
     public void readTillEnd() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.read();
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.read();
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void shortReader() throws IOException {
-        final BoundedReader mr = new BoundedReader( shortReader, 3 );
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(shortReader, 3)) {
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void readMulti() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        final char[] cbuf = new char[4];
-        for ( int i = 0; i < cbuf.length; i++ )
-        {
-            cbuf[i] = 'X';
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            final char[] cbuf = new char[4];
+            for (int i = 0; i < cbuf.length; i++) {
+                cbuf[i] = 'X';
+            }
+            final int read = mr.read(cbuf, 0, 4);
+            assertEquals(3, read);
+            assertEquals('0', cbuf[0]);
+            assertEquals('1', cbuf[1]);
+            assertEquals('2', cbuf[2]);
+            assertEquals('X', cbuf[3]);
         }
-        final int read = mr.read( cbuf, 0, 4 );
-        assertEquals( 3, read );
-        assertEquals( '0', cbuf[0] );
-        assertEquals( '1', cbuf[1] );
-        assertEquals( '2', cbuf[2] );
-        assertEquals( 'X', cbuf[3] );
-        mr.close();
     }
 
     @Test
     public void readMultiWithOffset() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        final char[] cbuf = new char[4];
-        for ( int i = 0; i < cbuf.length; i++ ) {
-            cbuf[i] = 'X';
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            final char[] cbuf = new char[4];
+            for (int i = 0; i < cbuf.length; i++) {
+                cbuf[i] = 'X';
+            }
+            final int read = mr.read(cbuf, 1, 2);
+            assertEquals(2, read);
+            assertEquals('X', cbuf[0]);
+            assertEquals('0', cbuf[1]);
+            assertEquals('1', cbuf[2]);
+            assertEquals('X', cbuf[3]);
         }
-        final int read = mr.read( cbuf, 1, 2 );
-        assertEquals( 2, read );
-        assertEquals( 'X', cbuf[0] );
-        assertEquals( '0', cbuf[1] );
-        assertEquals( '1', cbuf[2] );
-        assertEquals( 'X', cbuf[3] );
-        mr.close();
     }
 
     @Test
     public void markReset() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.mark( 3 );
-        mr.read();
-        mr.read();
-        mr.read();
-        mr.reset();
-        mr.read();
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.mark(3);
+            mr.read();
+            mr.read();
+            mr.read();
+            mr.reset();
+            mr.read();
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
 
     @Test
     public void markResetWithMarkOutsideBoundedReaderMax() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.mark( 4 );
-        mr.read();
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.mark(4);
+            mr.read();
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void markResetWithMarkOutsideBoundedReaderMaxAndInitialOffset() 
throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.read();
-        mr.mark( 3 );
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.read();
+            mr.mark(3);
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void markResetFromOffset1() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.mark( 3 );
-        mr.read();
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.reset();
-        mr.mark( 1 );
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.mark(3);
+            mr.read();
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+            mr.reset();
+            mr.mark(1);
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void markResetMarkMore() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.mark( 4 );
-        mr.read();
-        mr.read();
-        mr.read();
-        mr.reset();
-        mr.read();
-        mr.read();
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.mark(4);
+            mr.read();
+            mr.read();
+            mr.read();
+            mr.reset();
+            mr.read();
+            mr.read();
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void skipTest() throws IOException {
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.skip( 2 );
-        mr.read();
-        assertEquals( -1, mr.read() );
-        mr.close();
+        try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+            mr.skip(2);
+            mr.read();
+            assertEquals(-1, mr.read());
+        }
     }
 
     @Test
     public void closeTest() throws IOException {
-        final AtomicBoolean closed = new AtomicBoolean( false );
-        final Reader sr = new BufferedReader( new StringReader( "01234567890" 
) ) {
+        final AtomicBoolean closed = new AtomicBoolean(false);
+        try (final Reader sr = new BufferedReader(new 
StringReader("01234567890")) {
             @Override
-            public void close()
-                throws IOException
-            {
-                closed.set( true );
+            public void close() throws IOException {
+                closed.set(true);
                 super.close();
             }
-        };
+        }) {
 
-        final BoundedReader mr = new BoundedReader( sr, 3 );
-        mr.close();
-        assertTrue( closed.get() );
+            try (final BoundedReader mr = new BoundedReader(sr, 3)) {
+                // nothing
+            }
+        }
+        assertTrue(closed.get());
     }
 
     @Test(timeout = 5000)
diff --git 
a/src/test/java/org/apache/commons/io/input/CharSequenceInputStreamTest.java 
b/src/test/java/org/apache/commons/io/input/CharSequenceInputStreamTest.java
index d77e42f..e55f88b 100644
--- a/src/test/java/org/apache/commons/io/input/CharSequenceInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/CharSequenceInputStreamTest.java
@@ -65,16 +65,15 @@ public class CharSequenceInputStreamTest {
                 if (read == -1) {
                     assertEquals("EOF: offset should equal length for charset 
" + charsetName, expected.length, offset);
                     break;
-                } else {
-                    assertTrue("Read " + read + " <= " + bufferLength, read <= 
bufferLength);
-                    while (read > 0) {
-                        assertTrue("offset for " + charsetName + " " + offset 
+ " < " + expected.length, offset <
-                                expected.length);
-                        assertEquals("bytes should agree for " + charsetName, 
expected[offset], buffer[bufferOffset]);
-                        offset++;
-                        bufferOffset++;
-                        read--;
-                    }
+                }
+                assertTrue("Read " + read + " <= " + bufferLength, read <= 
bufferLength);
+                while (read > 0) {
+                    assertTrue("offset for " + charsetName + " " + offset + " 
< " + expected.length, offset <
+                            expected.length);
+                    assertEquals("bytes should agree for " + charsetName, 
expected[offset], buffer[bufferOffset]);
+                    offset++;
+                    bufferOffset++;
+                    read--;
                 }
             }
         }
diff --git 
a/src/test/java/org/apache/commons/io/input/CharSequenceReaderTest.java 
b/src/test/java/org/apache/commons/io/input/CharSequenceReaderTest.java
index b049491..d306293 100644
--- a/src/test/java/org/apache/commons/io/input/CharSequenceReaderTest.java
+++ b/src/test/java/org/apache/commons/io/input/CharSequenceReaderTest.java
@@ -41,23 +41,24 @@ public class CharSequenceReaderTest {
 
     @Test
     public void testMarkSupported() throws Exception {
-        final Reader reader = new CharSequenceReader("FooBar");
-        assertTrue(reader.markSupported());
-        reader.close();
+        try (final Reader reader = new CharSequenceReader("FooBar")) {
+            assertTrue(reader.markSupported());
+        }
     }
 
     @Test
     public void testMark() throws IOException {
-        final Reader reader = new CharSequenceReader("FooBar");
-        checkRead(reader, "Foo");
-        reader.mark(0);
-        checkRead(reader, "Bar");
-        reader.reset();
-        checkRead(reader, "Bar");
-        reader.close();
-        checkRead(reader, "Foo");
-        reader.reset();
-        checkRead(reader, "Foo");
+        try (final Reader reader = new CharSequenceReader("FooBar")) {
+            checkRead(reader, "Foo");
+            reader.mark(0);
+            checkRead(reader, "Bar");
+            reader.reset();
+            checkRead(reader, "Bar");
+            reader.close();
+            checkRead(reader, "Foo");
+            reader.reset();
+            checkRead(reader, "Foo");
+        }
     }
 
     @Test
@@ -77,41 +78,41 @@ public class CharSequenceReaderTest {
 
     @Test
     public void testRead() throws IOException {
-        final Reader reader = new CharSequenceReader("Foo");
-        assertEquals('F', reader.read());
-        assertEquals('o', reader.read());
-        assertEquals('o', reader.read());
-        assertEquals(-1, reader.read());
-        assertEquals(-1, reader.read());
-        reader.close();
+        try (final Reader reader = new CharSequenceReader("Foo")) {
+            assertEquals('F', reader.read());
+            assertEquals('o', reader.read());
+            assertEquals('o', reader.read());
+            assertEquals(-1, reader.read());
+            assertEquals(-1, reader.read());
+        }
     }
 
     @Test
     public void testReadCharArray() throws IOException {
-        final Reader reader = new CharSequenceReader("FooBar");
-        char[] chars = new char[2];
-        assertEquals(2, reader.read(chars));
-        checkArray(new char[] {'F', 'o'}, chars);
-        chars = new char[3];
-        assertEquals(3, reader.read(chars));
-        checkArray(new char[] {'o', 'B', 'a'}, chars);
-        chars = new char[3];
-        assertEquals(1, reader.read(chars));
-        checkArray(new char[] {'r', NONE, NONE}, chars);
-        assertEquals(-1, reader.read(chars));
-        reader.close();
+        try (final Reader reader = new CharSequenceReader("FooBar")) {
+            char[] chars = new char[2];
+            assertEquals(2, reader.read(chars));
+            checkArray(new char[] { 'F', 'o' }, chars);
+            chars = new char[3];
+            assertEquals(3, reader.read(chars));
+            checkArray(new char[] { 'o', 'B', 'a' }, chars);
+            chars = new char[3];
+            assertEquals(1, reader.read(chars));
+            checkArray(new char[] { 'r', NONE, NONE }, chars);
+            assertEquals(-1, reader.read(chars));
+        }
     }
 
     @Test
     public void testReadCharArrayPortion() throws IOException {
         final char[] chars = new char[10];
-        final Reader reader = new CharSequenceReader("FooBar");
-        assertEquals(3, reader.read(chars, 3, 3));
-        checkArray(new char[] {NONE, NONE, NONE, 'F', 'o', 'o'}, chars);
-        assertEquals(3, reader.read(chars, 0, 3));
-        checkArray(new char[] {'B', 'a', 'r', 'F', 'o', 'o', NONE}, chars);
-        assertEquals(-1, reader.read(chars));
-        reader.close();
+        try (final Reader reader = new CharSequenceReader("FooBar")) {
+            assertEquals(3, reader.read(chars, 3, 3));
+            checkArray(new char[] { NONE, NONE, NONE, 'F', 'o', 'o' }, chars);
+            assertEquals(3, reader.read(chars, 0, 3));
+            checkArray(new char[] { 'B', 'a', 'r', 'F', 'o', 'o', NONE }, 
chars);
+            assertEquals(-1, reader.read(chars));
+        }
     }
 
     private void checkRead(final Reader reader, final String expected) throws 
IOException {
diff --git 
a/src/test/java/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
 
b/src/test/java/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
index 191b4e0..12ffdc6 100644
--- 
a/src/test/java/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
+++ 
b/src/test/java/org/apache/commons/io/input/ClassLoaderObjectInputStreamTest.java
@@ -49,12 +49,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.writeObject(input);
 
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final Object result = clois.readObject();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final Object result = clois.readObject();
 
-        assertEquals(input, result);
-        clois.close();
+            assertEquals(input, result);
+        }
     }
 
     @org.junit.Test
@@ -67,12 +67,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.writeObject(input);
 
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final Object result = clois.readObject();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final Object result = clois.readObject();
 
-        assertEquals(input, result);
-        clois.close();
+            assertEquals(input, result);
+        }
     }
 
     @org.junit.Test
@@ -86,12 +86,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.close();
 
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final long result = clois.readLong();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final long result = clois.readLong();
 
-        assertEquals(input, result);
-        clois.close();
+            assertEquals(input, result);
+        }
     }
 
     private static enum E {A, B, C}
@@ -117,9 +117,8 @@ public class ClassLoaderObjectInputStreamTest {
                 return (this.i == tother.i)
                         & (this.e == tother.e)
                         & equalObject(tother.o);
-            } else {
-                return false;
             }
+            return false;
         }
 
         private boolean equalObject(final Object other) {
@@ -146,12 +145,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.close();
 
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final Object result = clois.readObject();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final Object result = clois.readObject();
 
-        assertEquals(input, result);
-        clois.close();
+            assertEquals(input, result);
+        }
     }
 
     @org.junit.Test
@@ -165,12 +164,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.close();
 
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final Object result = clois.readObject();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final Object result = clois.readObject();
 
-        assertEquals(input, result);
-        clois.close();
+            assertEquals(input, result);
+        }
     }
 
     @org.junit.Test
@@ -181,12 +180,12 @@ public class ClassLoaderObjectInputStreamTest {
         oos.writeObject(Boolean.FALSE);
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
 
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final String[] interfaces = new String[]{Comparable.class.getName()};
-        final Class<?> result = clois.resolveProxyClass(interfaces);
-        assertTrue("Assignable", Comparable.class.isAssignableFrom(result));
-        clois.close();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final String[] interfaces = new String[] { 
Comparable.class.getName() };
+            final Class<?> result = clois.resolveProxyClass(interfaces);
+            assertTrue("Assignable", 
Comparable.class.isAssignableFrom(result));
+        }
     }
 
     @org.junit.Test
@@ -197,16 +196,15 @@ public class ClassLoaderObjectInputStreamTest {
         oos.writeObject(Boolean.FALSE);
         final InputStream bais = new ByteArrayInputStream(baos.toByteArray());
 
-        final ClassLoaderObjectInputStream clois =
-                new ClassLoaderObjectInputStream(getClass().getClassLoader(), 
bais);
-        final String[] interfaces = new String[]{Comparable.class.getName(),
-                                                 Serializable.class.getName(),
-                                                 Runnable.class.getName()};
-        final Class<?> result = clois.resolveProxyClass(interfaces);
-        assertTrue("Assignable", Comparable.class.isAssignableFrom(result));
-        assertTrue("Assignable", Runnable.class.isAssignableFrom(result));
-        assertTrue("Assignable", Serializable.class.isAssignableFrom(result));
-        assertFalse("Not Assignable", 
Flushable.class.isAssignableFrom(result));
-        clois.close();
+        try (final ClassLoaderObjectInputStream clois = new 
ClassLoaderObjectInputStream(getClass().getClassLoader(),
+                bais)) {
+            final String[] interfaces = new String[] { 
Comparable.class.getName(), Serializable.class.getName(),
+                    Runnable.class.getName() };
+            final Class<?> result = clois.resolveProxyClass(interfaces);
+            assertTrue("Assignable", 
Comparable.class.isAssignableFrom(result));
+            assertTrue("Assignable", Runnable.class.isAssignableFrom(result));
+            assertTrue("Assignable", 
Serializable.class.isAssignableFrom(result));
+            assertFalse("Not Assignable", 
Flushable.class.isAssignableFrom(result));
+        }
     }
 }
diff --git 
a/src/test/java/org/apache/commons/io/input/ClosedInputStreamTest.java 
b/src/test/java/org/apache/commons/io/input/ClosedInputStreamTest.java
index 96e3d40..04ec66f 100644
--- a/src/test/java/org/apache/commons/io/input/ClosedInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/ClosedInputStreamTest.java
@@ -27,9 +27,9 @@ public class ClosedInputStreamTest {
 
     @Test
     public void testRead() throws Exception {
-        final ClosedInputStream cis = new ClosedInputStream();
-        assertEquals("read()", -1, cis.read());
-        cis.close();
+        try (final ClosedInputStream cis = new ClosedInputStream()) {
+            assertEquals("read()", -1, cis.read());
+        }
     }
 
 }
diff --git 
a/src/test/java/org/apache/commons/io/input/CountingInputStreamTest.java 
b/src/test/java/org/apache/commons/io/input/CountingInputStreamTest.java
index a851aba..0bc4c92 100644
--- a/src/test/java/org/apache/commons/io/input/CountingInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/CountingInputStreamTest.java
@@ -38,33 +38,33 @@ public class CountingInputStreamTest {
         final String text = "A piece of text";
         final byte[] bytes = text.getBytes();
         final ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        // have to declare this larger as we're going to read
-        // off the end of the stream and input stream seems
-        // to do bounds checking
-        final byte[] result = new byte[21];
+            // have to declare this larger as we're going to read
+            // off the end of the stream and input stream seems
+            // to do bounds checking
+            final byte[] result = new byte[21];
 
-        final byte[] ba = new byte[5];
-        int found = cis.read(ba);
-        System.arraycopy(ba, 0, result, 0, 5);
-        assertEquals( found, cis.getCount() );
+            final byte[] ba = new byte[5];
+            int found = cis.read(ba);
+            System.arraycopy(ba, 0, result, 0, 5);
+            assertEquals(found, cis.getCount());
 
-        final int value = cis.read();
-        found++;
-        result[5] = (byte)value;
-        assertEquals( found, cis.getCount() );
+            final int value = cis.read();
+            found++;
+            result[5] = (byte) value;
+            assertEquals(found, cis.getCount());
 
-        found += cis.read(result, 6, 5);
-        assertEquals( found, cis.getCount() );
+            found += cis.read(result, 6, 5);
+            assertEquals(found, cis.getCount());
 
-        found += cis.read(result, 11, 10); // off the end
-        assertEquals( found, cis.getCount() );
+            found += cis.read(result, 11, 10); // off the end
+            assertEquals(found, cis.getCount());
 
-        // trim to get rid of the 6 empty values
-        final String textResult = new String(result).trim();
-        assertEquals(textResult, text);
-        cis.close();
+            // trim to get rid of the 6 empty values
+            final String textResult = new String(result).trim();
+            assertEquals(textResult, text);
+        }
     }
 
 
@@ -106,97 +106,97 @@ public class CountingInputStreamTest {
         final String text = "A piece of text";
         final byte[] bytes = text.getBytes();
         final ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final byte[] result = new byte[bytes.length];
+            final byte[] result = new byte[bytes.length];
 
-        int found = cis.read(result, 0, 5);
-        assertEquals( found, cis.getCount() );
+            int found = cis.read(result, 0, 5);
+            assertEquals(found, cis.getCount());
 
-        final int count = cis.resetCount();
-        found = cis.read(result, 6, 5);
-        assertEquals( found, count );
-        cis.close();
+            final int count = cis.resetCount();
+            found = cis.read(result, 6, 5);
+            assertEquals(found, count);
+        }
     }
 
     @Test
     public void testZeroLength1() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[0]);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final int found = cis.read();
-        assertEquals(-1, found);
-        assertEquals(0, cis.getCount());
-        cis.close();
+            final int found = cis.read();
+            assertEquals(-1, found);
+            assertEquals(0, cis.getCount());
+        }
     }
 
     @Test
     public void testZeroLength2() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[0]);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final byte[] result = new byte[10];
+            final byte[] result = new byte[10];
 
-        final int found = cis.read(result);
-        assertEquals(-1, found);
-        assertEquals(0, cis.getCount());
-        cis.close();
+            final int found = cis.read(result);
+            assertEquals(-1, found);
+            assertEquals(0, cis.getCount());
+        }
     }
 
     @Test
     public void testZeroLength3() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[0]);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final byte[] result = new byte[10];
+            final byte[] result = new byte[10];
 
-        final int found = cis.read(result, 0, 5);
-        assertEquals(-1, found);
-        assertEquals(0, cis.getCount());
-        cis.close();
+            final int found = cis.read(result, 0, 5);
+            assertEquals(-1, found);
+            assertEquals(0, cis.getCount());
+        }
     }
 
     @Test
     public void testEOF1() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[2]);
-        final CountingInputStream cis = new CountingInputStream(bais);
-
-        int found = cis.read();
-        assertEquals(0, found);
-        assertEquals(1, cis.getCount());
-        found = cis.read();
-        assertEquals(0, found);
-        assertEquals(2, cis.getCount());
-        found = cis.read();
-        assertEquals(-1, found);
-        assertEquals(2, cis.getCount());
-        cis.close();
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
+
+            int found = cis.read();
+            assertEquals(0, found);
+            assertEquals(1, cis.getCount());
+            found = cis.read();
+            assertEquals(0, found);
+            assertEquals(2, cis.getCount());
+            found = cis.read();
+            assertEquals(-1, found);
+            assertEquals(2, cis.getCount());
+        }
     }
 
     @Test
     public void testEOF2() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[2]);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final byte[] result = new byte[10];
+            final byte[] result = new byte[10];
 
-        final int found = cis.read(result);
-        assertEquals(2, found);
-        assertEquals(2, cis.getCount());
-        cis.close();
+            final int found = cis.read(result);
+            assertEquals(2, found);
+            assertEquals(2, cis.getCount());
+        }
     }
 
     @Test
     public void testEOF3() throws Exception {
         final ByteArrayInputStream bais = new ByteArrayInputStream(new 
byte[2]);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        final byte[] result = new byte[10];
+            final byte[] result = new byte[10];
 
-        final int found = cis.read(result, 0, 5);
-        assertEquals(2, found);
-        assertEquals(2, cis.getCount());
-        cis.close();
+            final int found = cis.read(result, 0, 5);
+            assertEquals(2, found);
+            assertEquals(2, cis.getCount());
+        }
     }
 
     @Test
@@ -204,16 +204,16 @@ public class CountingInputStreamTest {
         final String text = "Hello World!";
         final byte[] bytes = text.getBytes();
         final ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
-        final CountingInputStream cis = new CountingInputStream(bais);
+        try (final CountingInputStream cis = new CountingInputStream(bais)) {
 
-        assertEquals(6,cis.skip(6));
-        assertEquals(6,cis.getCount());
-        final byte[] result = new byte[6];
-        cis.read(result);
+            assertEquals(6, cis.skip(6));
+            assertEquals(6, cis.getCount());
+            final byte[] result = new byte[6];
+            cis.read(result);
 
-        assertEquals("World!",new String(result));
-        assertEquals(12,cis.getCount());
-        cis.close();
+            assertEquals("World!", new String(result));
+            assertEquals(12, cis.getCount());
+        }
     }
 
 }

Reply via email to