You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2005/02/20 16:06:40 UTC
svn commit: r154514 - in jakarta/commons/proper/io/trunk: project.xml
src/java/org/apache/commons/io/input/CountingInputStream.java
src/test/org/apache/commons/io/input/CountingInputStreamTest.java
Author: scolebourne
Date: Sun Feb 20 07:06:38 2005
New Revision: 154514
URL: http://svn.apache.org/viewcvs?view=rev&rev=154514
Log:
Fix bug where count inaccurate after End of File
bug 33336, from Marcelo Liberato
Modified:
jakarta/commons/proper/io/trunk/project.xml
jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java
jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/input/CountingInputStreamTest.java
Modified: jakarta/commons/proper/io/trunk/project.xml
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/io/trunk/project.xml?view=diff&r1=154513&r2=154514
==============================================================================
--- jakarta/commons/proper/io/trunk/project.xml (original)
+++ jakarta/commons/proper/io/trunk/project.xml Sun Feb 20 07:06:38 2005
@@ -159,6 +159,9 @@
<name>Jason Anderson</name>
</contributor>
<contributor>
+ <name>Marcelo Liberato</name>
+ </contributor>
+ <contributor>
<name>Alban Peignier</name>
<email>alban.peignier at free.fr</email>
</contributor>
Modified: jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java?view=diff&r1=154513&r2=154514
==============================================================================
--- jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java (original)
+++ jakarta/commons/proper/io/trunk/src/java/org/apache/commons/io/input/CountingInputStream.java Sun Feb 20 07:06:38 2005
@@ -23,6 +23,7 @@
* have passed through so far.
*
* @author Henri Yandell
+ * @author Marcelo Liberato
* @version $Id$
*/
public class CountingInputStream extends ProxyInputStream {
@@ -45,7 +46,7 @@
*/
public int read(byte[] b) throws IOException {
int found = super.read(b);
- this.count += found;
+ this.count += (found >= 0) ? found : 0;
return found;
}
@@ -56,18 +57,19 @@
*/
public int read(byte[] b, int off, int len) throws IOException {
int found = super.read(b, off, len);
- this.count += found;
+ this.count += (found >= 0) ? found : 0;
return found;
}
/**
- * Increases the count by 1.
+ * Increases the count by 1 if a byte is successfully read.
*
* @see java.io.InputStream#read()
*/
public int read() throws IOException {
- this.count++;
- return super.read();
+ int found = super.read();
+ this.count += (found >= 0) ? 1 : 0;
+ return found;
}
/**
Modified: jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/input/CountingInputStreamTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/input/CountingInputStreamTest.java?view=diff&r1=154513&r2=154514
==============================================================================
--- jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/input/CountingInputStreamTest.java (original)
+++ jakarta/commons/proper/io/trunk/src/test/org/apache/commons/io/input/CountingInputStreamTest.java Sun Feb 20 07:06:38 2005
@@ -1,5 +1,5 @@
/*
- * Copyright 2003,2004 The Apache Software Foundation.
+ * Copyright 2003-2005 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,7 +23,10 @@
/**
* Tests the CountingInputStream.
*
- * @author <a href="mailto:bayard@apache.org">Henri Yandell</a>
+ * @author Henri Yandell
+ * @author Marcelo Liberato
+ * @author Stephen Colebourne
+ * @version $Id$
*/
public class CountingInputStreamTest extends TestCase {
@@ -78,5 +81,73 @@
found = cis.read(result, 6, 5);
assertEquals( found, cis.getCount() );
}
-}
+
+ public void testZeroLength1() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ int found = cis.read();
+ assertEquals(-1, found);
+ assertEquals(0, cis.getCount());
+ }
+
+ public void testZeroLength2() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ byte[] result = new byte[10];
+
+ int found = cis.read(result);
+ assertEquals(-1, found);
+ assertEquals(0, cis.getCount());
+ }
+
+ public void testZeroLength3() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ byte[] result = new byte[10];
+ int found = cis.read(result, 0, 5);
+ assertEquals(-1, found);
+ assertEquals(0, cis.getCount());
+ }
+
+ public void testEOF1() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[2]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ int found = cis.read();
+ assertEquals(0, found);
+ assertEquals(1, cis.getCount());
+ found = cis.read();
+ assertEquals(0, found);
+ assertEquals(2, cis.getCount());
+ found = cis.read();
+ assertEquals(-1, found);
+ assertEquals(2, cis.getCount());
+ }
+
+ public void testEOF2() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[2]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ byte[] result = new byte[10];
+
+ int found = cis.read(result);
+ assertEquals(2, found);
+ assertEquals(2, cis.getCount());
+ }
+
+ public void testEOF3() throws Exception {
+ ByteArrayInputStream bais = new ByteArrayInputStream(new byte[2]);
+ CountingInputStream cis = new CountingInputStream(bais);
+
+ byte[] result = new byte[10];
+
+ int found = cis.read(result, 0, 5);
+ assertEquals(2, found);
+ assertEquals(2, cis.getCount());
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org