You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2012/03/23 04:36:45 UTC

svn commit: r1304177 - in /commons/proper/io/trunk/src: main/java/org/apache/commons/io/IOUtils.java test/java/org/apache/commons/io/IOUtilsTestCase.java

Author: ggregory
Date: Fri Mar 23 03:36:44 2012
New Revision: 1304177

URL: http://svn.apache.org/viewvc?rev=1304177&view=rev
Log:
Add missing tests as discovered with Cobertura. Add a new method IOUTils.toBufferedReader(Reader).

Modified:
    commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
    commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java

Modified: commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java?rev=1304177&r1=1304176&r2=1304177&view=diff
==============================================================================
--- commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java (original)
+++ commons/proper/io/trunk/src/main/java/org/apache/commons/io/IOUtils.java Fri Mar 23 03:36:44 2012
@@ -413,6 +413,19 @@ public class IOUtils {
         return ByteArrayOutputStream.toBufferedInputStream(input);
     }
 
+    /**
+     * Returns the given reader if it is a {@link BufferedReader}, otherwise creates a toBufferedReader for the given
+     * reader.
+     * 
+     * @param reader
+     *            the reader to wrap or return
+     * @return the given reader or a new {@link BufferedReader} for the given reader
+     * @since 2.2
+     */
+    public static BufferedReader toBufferedReader(Reader reader) {
+        return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
+    }
+    
     // read toByteArray
     //-----------------------------------------------------------------------
     /**
@@ -833,7 +846,7 @@ public class IOUtils {
      * @since 1.1
      */
     public static List<String> readLines(Reader input) throws IOException {
-        BufferedReader reader = new BufferedReader(input);
+        BufferedReader reader = toBufferedReader(input);
         List<String> list = new ArrayList<String>();
         String line = reader.readLine();
         while (line != null) {
@@ -1858,12 +1871,9 @@ public class IOUtils {
      */
     public static boolean contentEquals(Reader input1, Reader input2)
             throws IOException {
-        if (!(input1 instanceof BufferedReader)) {
-            input1 = new BufferedReader(input1);
-        }
-        if (!(input2 instanceof BufferedReader)) {
-            input2 = new BufferedReader(input2);
-        }
+        
+        input1 = toBufferedReader(input1);
+        input2 = toBufferedReader(input2);
 
         int ch = input1.read();
         while (EOF != ch) {
@@ -1894,18 +1904,8 @@ public class IOUtils {
      */
     public static boolean contentEqualsIgnoreEOL(Reader input1, Reader input2)
             throws IOException {
-        BufferedReader br1;
-        if (input1 instanceof BufferedReader) {
-            br1 = (BufferedReader) input1;
-        } else {
-            br1 = new BufferedReader(input1);
-        }
-        BufferedReader br2;
-        if (input2 instanceof BufferedReader) {
-            br2 = (BufferedReader) input2;
-        } else {
-            br2 = new BufferedReader(input2);
-        }
+        BufferedReader br1 = toBufferedReader(input1);
+        BufferedReader br2 = toBufferedReader(input2);
 
         String line1 = br1.readLine();
         String line2 = br2.readLine();

Modified: commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java?rev=1304177&r1=1304176&r2=1304177&view=diff
==============================================================================
--- commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java (original)
+++ commons/proper/io/trunk/src/test/java/org/apache/commons/io/IOUtilsTestCase.java Fri Mar 23 03:36:44 2012
@@ -16,6 +16,7 @@
  */
 package org.apache.commons.io;
 
+import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.CharArrayReader;
@@ -724,6 +725,14 @@ public class IOUtilsTestCase extends Fil
         assertTrue(IOUtils.contentEqualsIgnoreEOL(r1, r2));
     }
 
+    public void testContentEqualsReaderReader() throws Exception {
+        assertTrue(IOUtils.contentEquals(new StringReader(""), new StringReader("")));
+        assertTrue(IOUtils.contentEquals(new BufferedReader(new StringReader("")), new BufferedReader(new StringReader(""))));
+        assertTrue(IOUtils.contentEquals(new StringReader("ABC"), new StringReader("ABC")));
+        assertFalse(IOUtils.contentEquals(new StringReader("ABCD"), new StringReader("ABC")));
+        assertFalse(IOUtils.contentEquals(new StringReader("ABC"), new StringReader("ABCD")));
+    }
+
     public void testReadStream() throws Exception {
         final int size = 1027;