commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Stephen Colebourne (JIRA)" <j...@apache.org>
Subject [jira] Created: (IO-96) Test case misuses read(byte[]) and read(char[])
Date Wed, 11 Oct 2006 16:23:44 GMT
Test case misuses read(byte[]) and read(char[])
-----------------------------------------------

                 Key: IO-96
                 URL: http://issues.apache.org/jira/browse/IO-96
             Project: Commons IO
          Issue Type: Bug
          Components: Filters, Streams/Writers, Utilities
    Affects Versions: 1.2
         Environment: GNU classpath
            Reporter: Stephen Colebourne
         Assigned To: Stephen Colebourne
            Priority: Minor
             Fix For: 1.3


Message to mailing list from Anthony Green
http://www.mail-archive.com/commons-dev@jakarta.apache.org/msg82127.html

-----------------------------------------
This support routine from the commons-io project test code assumed that
FileReader.read(byte[]) would always read the entire file.  There's no
such guarantee, and some tests were failing on GNU Classpath based VMs
because of this.

Thanks,

AG



--- src/test/org/apache/commons/io/testtools/FileBasedTestCase.java~	2006-07-13 23:44:13.000000000
-0700
+++ src/test/org/apache/commons/io/testtools/FileBasedTestCase.java	2006-07-13 23:44:20.000000000
-0700
@@ -167,18 +171,22 @@
         throws IOException
     {
         Reader ir = new java.io.FileReader( file );
-        try {
-            char[] c1 = new char[ c0.length ];
-            int numRead = ir.read( c1 );
-            assertTrue( "Different number of bytes", numRead == c0.length );
-            for( int i = 0;
-                 i < numRead;
-                 assertTrue( "Byte " + i + " differs (" + c0[ i ] + " != " + c1[ i ] + ")",

-                    c0[ i ] == c1[ i ] ), i++
-                );
-        } finally {
-            ir.close();
-        }
+	int count = 0, numRead = 0;
+	char[] c1 = new char[ c0.length ];
+	try {
+	  while (count < c0.length)
+	    {
+	      numRead = ir.read( c1, count, c0.length);
+	      for( int i = count;
+		   i < count+numRead;
+		   assertTrue( "Byte " + i + " differs (" + c0[ i ] + " != " + c1[ i ] + ")", 
+			       c0[ i ] == c1[ i ] ), i++
+		   );
+	      count += numRead;
+	    }
+	} finally {
+	  ir.close();
+	}
     }
 
     protected void checkWrite(OutputStream output) throws Exception {

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message