Author: nextgens
Date: 2008-08-17 18:18:33 +0000 (Sun, 17 Aug 2008)
New Revision: 21975
Modified:
trunk/freenet/test/freenet/support/io/LineReadingInputStreamTest.java
Log:
bug #2501: maybe expose the real problem
Modified: trunk/freenet/test/freenet/support/io/LineReadingInputStreamTest.java
===================================================================
--- trunk/freenet/test/freenet/support/io/LineReadingInputStreamTest.java
2008-08-17 17:44:13 UTC (rev 21974)
+++ trunk/freenet/test/freenet/support/io/LineReadingInputStreamTest.java
2008-08-17 18:18:33 UTC (rev 21975)
@@ -21,12 +21,25 @@
};
public static final String STRESSED_LINE = "\n\u0114\n";
+ public static final String NULL_LINE = "a\u0000\u0000\u0000\u0000\n";
public static final String LENGTH_CHECKING_LINE = "a\u0000a\n";
public static final int LENGTH_CHECKING_LINE_LF = 3;
public static final int MAX_LENGTH = 128;
public static final int BUFFER_SIZE = 128;
+ public class MockInputStream extends InputStream {
+ public MockInputStream() {}
+
+ public int read() {
+ return -1;
+ }
+
+ public int read(byte[] data, int offset, int len) {
+ return len;
+ }
+ }
+
public void testReadLineWithoutMarking() throws Exception {
// try utf8
InputStream is = new
ByteArrayInputStream(STRESSED_LINE.getBytes("utf-8"));
@@ -44,9 +57,10 @@
assertNull(instance.readLineWithoutMarking(MAX_LENGTH,
BUFFER_SIZE, false));
// is it returning null?
- is = new NullInputStream();
+ is = new MockInputStream();
instance = new LineReadingInputStream(is);
assertNull(instance.readLineWithoutMarking(0, BUFFER_SIZE,
false));
+ assertNull(instance.readLineWithoutMarking(0, 0, false));
// is it throwing?
is = new ByteArrayInputStream(LENGTH_CHECKING_LINE.getBytes());
@@ -60,6 +74,11 @@
is = new ByteArrayInputStream(LENGTH_CHECKING_LINE.getBytes());
instance = new LineReadingInputStream(is);
assertEquals(LENGTH_CHECKING_LINE.substring(0,
LENGTH_CHECKING_LINE_LF),
instance.readLineWithoutMarking(LENGTH_CHECKING_LINE_LF, BUFFER_SIZE, true));
+
+ // is it handling nulls properly? @see #2501
+ is = new ByteArrayInputStream(NULL_LINE.getBytes());
+ instance = new LineReadingInputStream(is);
+ assertEquals(NULL_LINE.substring(0, 5),
instance.readLineWithoutMarking(BUFFER_SIZE, 1, true));
}
public void testReadLine() throws Exception {
@@ -78,10 +97,11 @@
}
assertNull(instance.readLine(MAX_LENGTH, BUFFER_SIZE, false));
- // is it returning null?
- is = new NullInputStream();
+ // is it returning null? and blocking when it should be?
+ is = new MockInputStream();
instance = new LineReadingInputStream(is);
assertNull(instance.readLine(0, BUFFER_SIZE, false));
+ assertNull(instance.readLine(0, 0, false));
// is it throwing?
is = new ByteArrayInputStream(LENGTH_CHECKING_LINE.getBytes());
@@ -95,6 +115,11 @@
is = new ByteArrayInputStream(LENGTH_CHECKING_LINE.getBytes());
instance = new LineReadingInputStream(is);
assertEquals(LENGTH_CHECKING_LINE.substring(0,
LENGTH_CHECKING_LINE_LF), instance.readLine(LENGTH_CHECKING_LINE_LF,
BUFFER_SIZE, true));
+
+ // is it handling nulls properly? @see #2501
+ is = new ByteArrayInputStream(NULL_LINE.getBytes());
+ instance = new LineReadingInputStream(is);
+ assertEquals(NULL_LINE.substring(0, 5),
instance.readLine(BUFFER_SIZE, 1, true));
}
public void testBothImplementation() throws Exception {