diff options
Diffstat (limited to 'src/libstd/io/buffered.rs')
| -rw-r--r-- | src/libstd/io/buffered.rs | 105 |
1 files changed, 55 insertions, 50 deletions
diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs index 5e64862cbec..e3bc97b6f28 100644 --- a/src/libstd/io/buffered.rs +++ b/src/libstd/io/buffered.rs @@ -88,7 +88,7 @@ impl<R: Reader> BufferedReader<R> { impl<R: Reader> Buffer for BufferedReader<R> { fn fill<'a>(&'a mut self) -> IoResult<&'a [u8]> { - while self.pos == self.cap { + if self.pos == self.cap { self.cap = if_ok!(self.inner.read(self.buf)); self.pos = 0; } @@ -360,13 +360,13 @@ mod test { pub struct NullStream; impl Reader for NullStream { - fn read(&mut self, _: &mut [u8]) -> Option<uint> { - None + fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> { + Err(io::standard_error(io::EndOfFile)) } } impl Writer for NullStream { - fn write(&mut self, _: &[u8]) { } + fn write(&mut self, _: &[u8]) -> io::IoResult<()> { Ok(()) } } /// A dummy reader intended at testing short-reads propagation. @@ -375,8 +375,11 @@ mod test { } impl Reader for ShortReader { - fn read(&mut self, _: &mut [u8]) -> Option<uint> { - self.lengths.shift() + fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> { + match self.lengths.shift() { + Some(i) => Ok(i), + None => Err(io::standard_error(io::EndOfFile)) + } } } @@ -387,24 +390,24 @@ mod test { let mut buf = [0, 0, 0]; let nread = reader.read(buf); - assert_eq!(Some(2), nread); + assert_eq!(Ok(2), nread); assert_eq!([0, 1, 0], buf); let mut buf = [0]; let nread = reader.read(buf); - assert_eq!(Some(1), nread); + assert_eq!(Ok(1), nread); assert_eq!([2], buf); let mut buf = [0, 0, 0]; let nread = reader.read(buf); - assert_eq!(Some(1), nread); + assert_eq!(Ok(1), nread); assert_eq!([3, 0, 0], buf); let nread = reader.read(buf); - assert_eq!(Some(1), nread); + assert_eq!(Ok(1), nread); assert_eq!([4, 0, 0], buf); - assert_eq!(None, reader.read(buf)); + assert!(reader.read(buf).is_err()); } #[test] @@ -412,35 +415,35 @@ mod test { let inner = MemWriter::new(); let mut writer = BufferedWriter::with_capacity(2, inner); - writer.write([0, 1]); + writer.write([0, 1]).unwrap(); assert_eq!([], writer.get_ref().get_ref()); - writer.write([2]); + writer.write([2]).unwrap(); assert_eq!([0, 1], writer.get_ref().get_ref()); - writer.write([3]); + writer.write([3]).unwrap(); assert_eq!([0, 1], writer.get_ref().get_ref()); - writer.flush(); + writer.flush().unwrap(); assert_eq!([0, 1, 2, 3], writer.get_ref().get_ref()); - writer.write([4]); - writer.write([5]); + writer.write([4]).unwrap(); + writer.write([5]).unwrap(); assert_eq!([0, 1, 2, 3], writer.get_ref().get_ref()); - writer.write([6]); + writer.write([6]).unwrap(); assert_eq!([0, 1, 2, 3, 4, 5], writer.get_ref().get_ref()); - writer.write([7, 8]); + writer.write([7, 8]).unwrap(); assert_eq!([0, 1, 2, 3, 4, 5, 6], writer.get_ref().get_ref()); - writer.write([9, 10, 11]); + writer.write([9, 10, 11]).unwrap(); assert_eq!([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], writer.get_ref().get_ref()); - writer.flush(); + writer.flush().unwrap(); assert_eq!([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], writer.get_ref().get_ref()); } @@ -448,7 +451,7 @@ mod test { #[test] fn test_buffered_writer_inner_flushes() { let mut w = BufferedWriter::with_capacity(3, MemWriter::new()); - w.write([0, 1]); + w.write([0, 1]).unwrap(); assert_eq!([], w.get_ref().get_ref()); let w = w.unwrap(); assert_eq!([0, 1], w.get_ref()); @@ -461,47 +464,49 @@ mod test { struct S; impl io::Writer for S { - fn write(&mut self, _: &[u8]) {} + fn write(&mut self, _: &[u8]) -> io::IoResult<()> { Ok(()) } } impl io::Reader for S { - fn read(&mut self, _: &mut [u8]) -> Option<uint> { None } + fn read(&mut self, _: &mut [u8]) -> io::IoResult<uint> { + Err(io::standard_error(io::EndOfFile)) + } } let mut stream = BufferedStream::new(S); let mut buf = []; - stream.read(buf); - stream.write(buf); - stream.flush(); + assert!(stream.read(buf).is_err()); + stream.write(buf).unwrap(); + stream.flush().unwrap(); } #[test] fn test_read_until() { let inner = MemReader::new(~[0, 1, 2, 1, 0]); let mut reader = BufferedReader::with_capacity(2, inner); - assert_eq!(reader.read_until(0), Some(~[0])); - assert_eq!(reader.read_until(2), Some(~[1, 2])); - assert_eq!(reader.read_until(1), Some(~[1])); - assert_eq!(reader.read_until(8), Some(~[0])); - assert_eq!(reader.read_until(9), None); + assert_eq!(reader.read_until(0), Ok(~[0])); + assert_eq!(reader.read_until(2), Ok(~[1, 2])); + assert_eq!(reader.read_until(1), Ok(~[1])); + assert_eq!(reader.read_until(8), Ok(~[0])); + assert!(reader.read_until(9).is_err()); } #[test] fn test_line_buffer() { let mut writer = LineBufferedWriter::new(MemWriter::new()); - writer.write([0]); + writer.write([0]).unwrap(); assert_eq!(writer.get_ref().get_ref(), []); - writer.write([1]); + writer.write([1]).unwrap(); assert_eq!(writer.get_ref().get_ref(), []); - writer.flush(); + writer.flush().unwrap(); assert_eq!(writer.get_ref().get_ref(), [0, 1]); - writer.write([0, '\n' as u8, 1, '\n' as u8, 2]); + writer.write([0, '\n' as u8, 1, '\n' as u8, 2]).unwrap(); assert_eq!(writer.get_ref().get_ref(), [0, 1, 0, '\n' as u8, 1, '\n' as u8]); - writer.flush(); + writer.flush().unwrap(); assert_eq!(writer.get_ref().get_ref(), [0, 1, 0, '\n' as u8, 1, '\n' as u8, 2]); - writer.write([3, '\n' as u8]); + writer.write([3, '\n' as u8]).unwrap(); assert_eq!(writer.get_ref().get_ref(), [0, 1, 0, '\n' as u8, 1, '\n' as u8, 2, 3, '\n' as u8]); } @@ -510,10 +515,10 @@ mod test { fn test_read_line() { let in_buf = MemReader::new(bytes!("a\nb\nc").to_owned()); let mut reader = BufferedReader::with_capacity(2, in_buf); - assert_eq!(reader.read_line(), Some(~"a\n")); - assert_eq!(reader.read_line(), Some(~"b\n")); - assert_eq!(reader.read_line(), Some(~"c")); - assert_eq!(reader.read_line(), None); + assert_eq!(reader.read_line(), Ok(~"a\n")); + assert_eq!(reader.read_line(), Ok(~"b\n")); + assert_eq!(reader.read_line(), Ok(~"c")); + assert!(reader.read_line().is_err()); } #[test] @@ -532,20 +537,20 @@ mod test { 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), Some(0)); - assert_eq!(reader.read(buf), None); + assert_eq!(reader.read(buf), Ok(0)); + assert_eq!(reader.read(buf), Ok(1)); + assert_eq!(reader.read(buf), Ok(2)); + assert_eq!(reader.read(buf), Ok(0)); + assert_eq!(reader.read(buf), Ok(1)); + assert_eq!(reader.read(buf), Ok(0)); + assert!(reader.read(buf).is_err()); } #[test] fn read_char_buffered() { let buf = [195u8, 159u8]; let mut reader = BufferedReader::with_capacity(1, BufReader::new(buf)); - assert_eq!(reader.read_char(), Some('ß')); + assert_eq!(reader.read_char(), Ok('ß')); } #[bench] |
