Add tests for 0-byte read propagation.
The two `Some(0)' used to be `None' before the patch, a zero-byte long read exhausting a reader (and thereafter) still produce a `None'.
This commit is contained in:
parent
cab687853a
commit
ee887d7078
@ -322,6 +322,21 @@ mod test {
|
||||
fn write(&mut self, _: &[u8]) { }
|
||||
}
|
||||
|
||||
/// A dummy reader intended at testing short-reads propagation.
|
||||
pub struct ShortReader {
|
||||
priv lengths: ~[uint],
|
||||
}
|
||||
|
||||
impl Reader for ShortReader {
|
||||
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
|
||||
self.lengths.shift_opt()
|
||||
}
|
||||
|
||||
fn eof(&mut self) -> bool {
|
||||
self.lengths.len() == 0
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_buffered_reader() {
|
||||
let inner = MemReader::new(~[0, 1, 2, 3, 4]);
|
||||
@ -475,6 +490,19 @@ mod test {
|
||||
assert_eq!(it.next(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_short_reads() {
|
||||
let inner = ShortReader{lengths: ~[0, 1, 2, 0, 1, 0]};
|
||||
let mut reader = BufferedReader::new(inner);
|
||||
let mut buf = [0, 0];
|
||||
assert_eq!(reader.read(buf), Some(0));
|
||||
assert_eq!(reader.read(buf), Some(1));
|
||||
assert_eq!(reader.read(buf), Some(2));
|
||||
assert_eq!(reader.read(buf), Some(0));
|
||||
assert_eq!(reader.read(buf), Some(1));
|
||||
assert_eq!(reader.read(buf), None);
|
||||
}
|
||||
|
||||
|
||||
#[bench]
|
||||
fn bench_buffered_reader(bh: &mut Harness) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user