Use try-with resources

Assert markSupported()
diff --git a/src/test/java/org/apache/commons/io/input/BoundedInputStreamTest.java b/src/test/java/org/apache/commons/io/input/BoundedInputStreamTest.java
index aa9b3fa..29e7b53 100644
--- a/src/test/java/org/apache/commons/io/input/BoundedInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/BoundedInputStreamTest.java
@@ -61,6 +61,7 @@
         // limit = length
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld)).setCount(startCount)
                 .setMaxCount(helloWorld.length).get()) {
+            assertTrue(bounded.markSupported());
             assertEquals(helloWorld.length, bounded.getMaxCount());
             assertEquals(helloWorld.length, bounded.getMaxLength());
             assertEquals(actualStart, bounded.getCount());
@@ -90,6 +91,7 @@
         final int maxCountP1 = helloWorld.length + 1;
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld)).setCount(startCount)
                 .setMaxCount(maxCountP1).get()) {
+            assertTrue(bounded.markSupported());
             assertEquals(maxCountP1, bounded.getMaxLength());
             assertEquals(actualStart, bounded.getCount());
             assertEquals(Math.max(0, bounded.getMaxCount() - actualStart), bounded.getRemaining());
@@ -116,6 +118,7 @@
         }
         // limit < length
         try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), hello.length)) {
+            assertTrue(bounded.markSupported());
             assertEquals(hello.length, bounded.getMaxLength());
             assertEquals(0, bounded.getCount());
             assertEquals(bounded.getMaxLength(), bounded.getRemaining());
@@ -143,109 +146,108 @@
         final AtomicBoolean boolRef = new AtomicBoolean();
 
         // limit = length
-        BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length) {
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length) {
             @Override
             protected void onMaxLength(final long max, final long readCount) {
                 boolRef.set(true);
             }
-        };
-        assertEquals(helloWorld.length, bounded.getMaxCount());
-        assertEquals(helloWorld.length, bounded.getMaxLength());
-        assertEquals(0, bounded.getCount());
-        assertEquals(bounded.getMaxCount(), bounded.getRemaining());
-        assertEquals(bounded.getMaxLength(), bounded.getRemaining());
-        assertFalse(boolRef.get());
-        int readCount = 0;
-        for (int i = 0; i < helloWorld.length; i++) {
-            assertEquals(helloWorld[i], bounded.read(), "limit = length byte[" + i + "]");
-            readCount++;
+        }) {
+            assertTrue(bounded.markSupported());
             assertEquals(helloWorld.length, bounded.getMaxCount());
             assertEquals(helloWorld.length, bounded.getMaxLength());
+            assertEquals(0, bounded.getCount());
+            assertEquals(bounded.getMaxCount(), bounded.getRemaining());
+            assertEquals(bounded.getMaxLength(), bounded.getRemaining());
+            assertFalse(boolRef.get());
+            int readCount = 0;
+            for (int i = 0; i < helloWorld.length; i++) {
+                assertEquals(helloWorld[i], bounded.read(), "limit = length byte[" + i + "]");
+                readCount++;
+                assertEquals(helloWorld.length, bounded.getMaxCount());
+                assertEquals(helloWorld.length, bounded.getMaxLength());
+                assertEquals(readCount, bounded.getCount());
+                assertEquals(bounded.getMaxCount() - readCount, bounded.getRemaining());
+                assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            }
+            assertEquals(-1, bounded.read(), "limit = length end");
+            assertEquals(0, bounded.available());
+            assertEquals(helloWorld.length, bounded.getMaxLength());
             assertEquals(readCount, bounded.getCount());
-            assertEquals(bounded.getMaxCount() - readCount, bounded.getRemaining());
             assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            assertTrue(boolRef.get());
         }
-        assertEquals(-1, bounded.read(), "limit = length end");
-        assertEquals(0, bounded.available());
-        assertEquals(helloWorld.length, bounded.getMaxLength());
-        assertEquals(readCount, bounded.getCount());
-        assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
-        assertTrue(boolRef.get());
-
         // limit > length
         boolRef.set(false);
         final int length2 = helloWorld.length + 1;
-        bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), length2) {
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), length2) {
             @Override
             protected void onMaxLength(final long max, final long readCount) {
                 boolRef.set(true);
             }
-        };
-        assertEquals(length2, bounded.getMaxLength());
-        assertEquals(0, bounded.getCount());
-        assertEquals(bounded.getMaxLength(), bounded.getRemaining());
-        assertFalse(boolRef.get());
-        readCount = 0;
-        for (int i = 0; i < helloWorld.length; i++) {
-            assertEquals(helloWorld[i], bounded.read(), "limit > length byte[" + i + "]");
-            readCount++;
+        }) {
+            assertTrue(bounded.markSupported());
+            assertEquals(length2, bounded.getMaxLength());
+            assertEquals(0, bounded.getCount());
+            assertEquals(bounded.getMaxLength(), bounded.getRemaining());
+            assertFalse(boolRef.get());
+            int readCount = 0;
+            for (int i = 0; i < helloWorld.length; i++) {
+                assertEquals(helloWorld[i], bounded.read(), "limit > length byte[" + i + "]");
+                readCount++;
+                assertEquals(length2, bounded.getMaxLength());
+                assertEquals(readCount, bounded.getCount());
+                assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            }
+            assertEquals(0, bounded.available());
+            assertEquals(-1, bounded.read(), "limit > length end");
             assertEquals(length2, bounded.getMaxLength());
             assertEquals(readCount, bounded.getCount());
             assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            assertFalse(boolRef.get());
         }
-        assertEquals(0, bounded.available());
-        assertEquals(-1, bounded.read(), "limit > length end");
-        assertEquals(length2, bounded.getMaxLength());
-        assertEquals(readCount, bounded.getCount());
-        assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
-        assertFalse(boolRef.get());
-
         // limit < length
         boolRef.set(false);
-        bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), hello.length) {
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), hello.length) {
             @Override
             protected void onMaxLength(final long max, final long readCount) {
                 boolRef.set(true);
             }
-        };
-        assertEquals(hello.length, bounded.getMaxLength());
-        assertEquals(0, bounded.getCount());
-        assertEquals(bounded.getMaxLength(), bounded.getRemaining());
-        assertFalse(boolRef.get());
-        readCount = 0;
-        for (int i = 0; i < hello.length; i++) {
-            assertEquals(hello[i], bounded.read(), "limit < length byte[" + i + "]");
-            readCount++;
+        }) {
+            assertTrue(bounded.markSupported());
+            assertEquals(hello.length, bounded.getMaxLength());
+            assertEquals(0, bounded.getCount());
+            assertEquals(bounded.getMaxLength(), bounded.getRemaining());
+            assertFalse(boolRef.get());
+            int readCount = 0;
+            for (int i = 0; i < hello.length; i++) {
+                assertEquals(hello[i], bounded.read(), "limit < length byte[" + i + "]");
+                readCount++;
+                assertEquals(hello.length, bounded.getMaxLength());
+                assertEquals(readCount, bounded.getCount());
+                assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            }
+            assertEquals(-1, bounded.read(), "limit < length end");
             assertEquals(hello.length, bounded.getMaxLength());
             assertEquals(readCount, bounded.getCount());
             assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
+            assertTrue(boolRef.get());
         }
-        assertEquals(-1, bounded.read(), "limit < length end");
-        assertEquals(hello.length, bounded.getMaxLength());
-        assertEquals(readCount, bounded.getCount());
-        assertEquals(bounded.getMaxLength() - readCount, bounded.getRemaining());
-        assertTrue(boolRef.get());
     }
 
     @Test
     public void testReadArray() throws Exception {
-
         final byte[] helloWorld = "Hello World".getBytes(StandardCharsets.UTF_8);
         final byte[] hello = "Hello".getBytes(StandardCharsets.UTF_8);
-
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld)).get()) {
             compare("limit = -1", helloWorld, IOUtils.toByteArray(bounded));
         }
-
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld)).setMaxCount(0).get()) {
             compare("limit = 0", IOUtils.EMPTY_BYTE_ARRAY, IOUtils.toByteArray(bounded));
         }
-
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld))
                 .setMaxCount(helloWorld.length).get()) {
             compare("limit = length", helloWorld, IOUtils.toByteArray(bounded));
         }
-
         try (BoundedInputStream bounded = BoundedInputStream.builder().setInputStream(new ByteArrayInputStream(helloWorld))
                 .setMaxCount(helloWorld.length + 1).get()) {
             compare("limit > length", helloWorld, IOUtils.toByteArray(bounded));
@@ -259,29 +261,31 @@
     @SuppressWarnings("deprecation")
     @Test
     public void testReadSingle() throws Exception {
-        BoundedInputStream bounded;
         final byte[] helloWorld = "Hello World".getBytes(StandardCharsets.UTF_8);
         final byte[] hello = "Hello".getBytes(StandardCharsets.UTF_8);
-
         // limit = length
-        bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length);
-        for (int i = 0; i < helloWorld.length; i++) {
-            assertEquals(helloWorld[i], bounded.read(), "limit = length byte[" + i + "]");
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length)) {
+            assertTrue(bounded.markSupported());
+            for (int i = 0; i < helloWorld.length; i++) {
+                assertEquals(helloWorld[i], bounded.read(), "limit = length byte[" + i + "]");
+            }
+            assertEquals(-1, bounded.read(), "limit = length end");
         }
-        assertEquals(-1, bounded.read(), "limit = length end");
-
         // limit > length
-        bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length + 1);
-        for (int i = 0; i < helloWorld.length; i++) {
-            assertEquals(helloWorld[i], bounded.read(), "limit > length byte[" + i + "]");
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), helloWorld.length + 1)) {
+            assertTrue(bounded.markSupported());
+            for (int i = 0; i < helloWorld.length; i++) {
+                assertEquals(helloWorld[i], bounded.read(), "limit > length byte[" + i + "]");
+            }
+            assertEquals(-1, bounded.read(), "limit > length end");
         }
-        assertEquals(-1, bounded.read(), "limit > length end");
-
         // limit < length
-        bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), hello.length);
-        for (int i = 0; i < hello.length; i++) {
-            assertEquals(hello[i], bounded.read(), "limit < length byte[" + i + "]");
+        try (BoundedInputStream bounded = new BoundedInputStream(new ByteArrayInputStream(helloWorld), hello.length)) {
+            assertTrue(bounded.markSupported());
+            for (int i = 0; i < hello.length; i++) {
+                assertEquals(hello[i], bounded.read(), "limit < length byte[" + i + "]");
+            }
+            assertEquals(-1, bounded.read(), "limit < length end");
         }
-        assertEquals(-1, bounded.read(), "limit < length end");
     }
 }