Author: julius Date: Fri Jan 21 19:39:11 2011 New Revision: 1061980 URL: http://svn.apache.org/viewvc?rev=1061980&view=rev Log: Fix for CODEC-101: java.io.InputStreamReader hates it when InputStream.read(byte[]) returns a zero. (Adding an extra JUnit Test for good luck.)
Modified: commons/proper/codec/trunk/src/test/org/apache/commons/codec/binary/Base64InputStreamTest.java Modified: commons/proper/codec/trunk/src/test/org/apache/commons/codec/binary/Base64InputStreamTest.java URL: http://svn.apache.org/viewvc/commons/proper/codec/trunk/src/test/org/apache/commons/codec/binary/Base64InputStreamTest.java?rev=1061980&r1=1061979&r2=1061980&view=diff ============================================================================== --- commons/proper/codec/trunk/src/test/org/apache/commons/codec/binary/Base64InputStreamTest.java (original) +++ commons/proper/codec/trunk/src/test/org/apache/commons/codec/binary/Base64InputStreamTest.java Fri Jan 21 19:39:11 2011 @@ -17,8 +17,10 @@ package org.apache.commons.codec.binary; +import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.InputStream; +import java.io.InputStreamReader; import java.util.Arrays; import junit.framework.TestCase; @@ -65,6 +67,35 @@ public class Base64InputStreamTest exten } /** + * Another test for the CODEC-101 bug: + * In commons-codec-1.4 this test shows InputStreamReader explicitly hating an + * InputStream.read(byte[]) return of 0: + * + * java.io.IOException: Underlying input stream returned zero bytes + * at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:268) + * at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) + * at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) + * at java.io.InputStreamReader.read(InputStreamReader.java:167) + * at java.io.BufferedReader.fill(BufferedReader.java:136) + * at java.io.BufferedReader.readLine(BufferedReader.java:299) + * at java.io.BufferedReader.readLine(BufferedReader.java:362) + * at org.apache.commons.codec.binary.Base64InputStreamTest.testInputStreamReader(Base64InputStreamTest.java:75) + * + * But in commons-codec-1.5 it's fixed. :-) + * + * @throws Exception for some failure scenarios. + */ + public void testInputStreamReader() throws Exception { + byte[] codec101 = StringUtils.getBytesUtf8(Base64TestData.CODEC_101_MULTIPLE_OF_3); + ByteArrayInputStream bais = new ByteArrayInputStream(codec101); + Base64InputStream in = new Base64InputStream(bais); + InputStreamReader isr = new InputStreamReader(in); + BufferedReader br = new BufferedReader(isr); + String line = br.readLine(); + assertNotNull("Codec101: InputStreamReader works!", line); + } + + /** * Test the Base64InputStream implementation against the special NPE inducing input * identified in the CODEC-98 bug. *