[ http://issues.apache.org/jira/browse/IO-96?page=all ]

Stephen Colebourne resolved IO-96.
----------------------------------

    Resolution: Fixed

> 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/[email protected]/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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to