Skip to content

Commit 2a47a53

Browse files
committed
---
yaml --- r: 147430 b: refs/heads/try2 c: ee887d7 h: refs/heads/master v: v3
1 parent 33f8b32 commit 2a47a53

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ refs/heads/snap-stage3: 78a7676898d9f80ab540c6df5d4c9ce35bb50463
55
refs/heads/try: 519addf6277dbafccbb4159db4b710c37eaa2ec5
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
8-
refs/heads/try2: cab687853a63198e5de9aa094d4ac01d068d0285
8+
refs/heads/try2: ee887d70780bce4c89a8977d04f724064ee1ae8f
99
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503

branches/try2/src/libstd/io/buffered.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,21 @@ mod test {
322322
fn write(&mut self, _: &[u8]) { }
323323
}
324324

325+
/// A dummy reader intended at testing short-reads propagation.
326+
pub struct ShortReader {
327+
priv lengths: ~[uint],
328+
}
329+
330+
impl Reader for ShortReader {
331+
fn read(&mut self, _: &mut [u8]) -> Option<uint> {
332+
self.lengths.shift_opt()
333+
}
334+
335+
fn eof(&mut self) -> bool {
336+
self.lengths.len() == 0
337+
}
338+
}
339+
325340
#[test]
326341
fn test_buffered_reader() {
327342
let inner = MemReader::new(~[0, 1, 2, 3, 4]);
@@ -475,6 +490,19 @@ mod test {
475490
assert_eq!(it.next(), None);
476491
}
477492

493+
#[test]
494+
fn test_short_reads() {
495+
let inner = ShortReader{lengths: ~[0, 1, 2, 0, 1, 0]};
496+
let mut reader = BufferedReader::new(inner);
497+
let mut buf = [0, 0];
498+
assert_eq!(reader.read(buf), Some(0));
499+
assert_eq!(reader.read(buf), Some(1));
500+
assert_eq!(reader.read(buf), Some(2));
501+
assert_eq!(reader.read(buf), Some(0));
502+
assert_eq!(reader.read(buf), Some(1));
503+
assert_eq!(reader.read(buf), None);
504+
}
505+
478506

479507
#[bench]
480508
fn bench_buffered_reader(bh: &mut Harness) {

0 commit comments

Comments
 (0)