Skip to content

Commit 1d6feac

Browse files
committed
Add missing tests as discovered with Cobertura. Add a new method IOUTils.toBufferedReader(Reader).
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/io/trunk@1304177 13f79535-47bb-0310-9956-ffa450edef68
1 parent f4958df commit 1d6feac

2 files changed

Lines changed: 28 additions & 19 deletions

File tree

src/main/java/org/apache/commons/io/IOUtils.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -413,6 +413,19 @@ public static InputStream toBufferedInputStream(InputStream input) throws IOExce
413413
return ByteArrayOutputStream.toBufferedInputStream(input);
414414
}
415415

416+
/**
417+
* Returns the given reader if it is a {@link BufferedReader}, otherwise creates a toBufferedReader for the given
418+
* reader.
419+
*
420+
* @param reader
421+
* the reader to wrap or return
422+
* @return the given reader or a new {@link BufferedReader} for the given reader
423+
* @since 2.2
424+
*/
425+
public static BufferedReader toBufferedReader(Reader reader) {
426+
return reader instanceof BufferedReader ? (BufferedReader) reader : new BufferedReader(reader);
427+
}
428+
416429
// read toByteArray
417430
//-----------------------------------------------------------------------
418431
/**
@@ -833,7 +846,7 @@ public static List<String> readLines(InputStream input, String encoding) throws
833846
* @since 1.1
834847
*/
835848
public static List<String> readLines(Reader input) throws IOException {
836-
BufferedReader reader = new BufferedReader(input);
849+
BufferedReader reader = toBufferedReader(input);
837850
List<String> list = new ArrayList<String>();
838851
String line = reader.readLine();
839852
while (line != null) {
@@ -1858,12 +1871,9 @@ public static boolean contentEquals(InputStream input1, InputStream input2)
18581871
*/
18591872
public static boolean contentEquals(Reader input1, Reader input2)
18601873
throws IOException {
1861-
if (!(input1 instanceof BufferedReader)) {
1862-
input1 = new BufferedReader(input1);
1863-
}
1864-
if (!(input2 instanceof BufferedReader)) {
1865-
input2 = new BufferedReader(input2);
1866-
}
1874+
1875+
input1 = toBufferedReader(input1);
1876+
input2 = toBufferedReader(input2);
18671877

18681878
int ch = input1.read();
18691879
while (EOF != ch) {
@@ -1894,18 +1904,8 @@ public static boolean contentEquals(Reader input1, Reader input2)
18941904
*/
18951905
public static boolean contentEqualsIgnoreEOL(Reader input1, Reader input2)
18961906
throws IOException {
1897-
BufferedReader br1;
1898-
if (input1 instanceof BufferedReader) {
1899-
br1 = (BufferedReader) input1;
1900-
} else {
1901-
br1 = new BufferedReader(input1);
1902-
}
1903-
BufferedReader br2;
1904-
if (input2 instanceof BufferedReader) {
1905-
br2 = (BufferedReader) input2;
1906-
} else {
1907-
br2 = new BufferedReader(input2);
1908-
}
1907+
BufferedReader br1 = toBufferedReader(input1);
1908+
BufferedReader br2 = toBufferedReader(input2);
19091909

19101910
String line1 = br1.readLine();
19111911
String line2 = br2.readLine();

src/test/java/org/apache/commons/io/IOUtilsTestCase.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
package org.apache.commons.io;
1818

19+
import java.io.BufferedReader;
1920
import java.io.ByteArrayInputStream;
2021
import java.io.ByteArrayOutputStream;
2122
import java.io.CharArrayReader;
@@ -724,6 +725,14 @@ public void testContentEqualsIgnoreEOL() throws Exception {
724725
assertTrue(IOUtils.contentEqualsIgnoreEOL(r1, r2));
725726
}
726727

728+
public void testContentEqualsReaderReader() throws Exception {
729+
assertTrue(IOUtils.contentEquals(new StringReader(""), new StringReader("")));
730+
assertTrue(IOUtils.contentEquals(new BufferedReader(new StringReader("")), new BufferedReader(new StringReader(""))));
731+
assertTrue(IOUtils.contentEquals(new StringReader("ABC"), new StringReader("ABC")));
732+
assertFalse(IOUtils.contentEquals(new StringReader("ABCD"), new StringReader("ABC")));
733+
assertFalse(IOUtils.contentEquals(new StringReader("ABC"), new StringReader("ABCD")));
734+
}
735+
727736
public void testReadStream() throws Exception {
728737
final int size = 1027;
729738

0 commit comments

Comments
 (0)