Add some basic tests for RingBuf

This commit is contained in:
Florian Hartwig
2015-04-09 23:18:16 +02:00
parent c4546493ea
commit 40f1d1aa77
2 changed files with 67 additions and 0 deletions
+1
View File
@@ -7,6 +7,7 @@ mod test_buf;
mod test_buf_fill;
mod test_byte_buf;
mod test_bytes;
mod test_ring;
mod test_rope;
mod test_seq_byte_str;
mod test_small_byte_str;
+66
View File
@@ -0,0 +1,66 @@
use bytes::RingBuf;
#[test]
pub fn test_initial_buf_empty() {
use bytes::traits::{Buf, BufExt, MutBuf, MutBufExt};
let mut buf = RingBuf::new(16);
assert_eq!(MutBuf::remaining(&buf), 16);
assert_eq!(Buf::remaining(&buf), 0);
let bytes_written = buf.write(&[1, 2, 3][..]).unwrap();
assert_eq!(bytes_written, 3);
let bytes_written = buf.write(&[][..]).unwrap();
assert_eq!(bytes_written, 0);
assert_eq!(MutBuf::remaining(&buf), 13);
assert_eq!(Buf::remaining(&buf), 3);
assert_eq!(buf.bytes(), [1, 2, 3]);
let mut out = [0u8; 3];
let bytes_read = buf.read(&mut out[..]).unwrap();;
assert_eq!(bytes_read, 3);
assert_eq!(out, [1, 2, 3]);
assert_eq!(MutBuf::remaining(&buf), 16);
assert_eq!(Buf::remaining(&buf), 0);
}
#[test]
fn test_wrapping_write() {
use bytes::traits::{BufExt, MutBufExt};
let mut buf = RingBuf::new(16);
let mut out = [0;10];
buf.write(&[42;12][..]).unwrap();
let bytes_read = buf.read(&mut out[..]).unwrap();
assert_eq!(bytes_read, 10);
let bytes_written = buf.write(&[23;8][..]).unwrap();
assert_eq!(bytes_written, 8);
let bytes_read = buf.read(&mut out[..]).unwrap();
assert_eq!(bytes_read, 10);
assert_eq!(out, [42, 42, 23, 23, 23, 23, 23, 23, 23, 23]);
}
#[test]
fn test_io_write_and_read() {
use std::io::{Read, Write};
let mut buf = RingBuf::new(16);
let mut out = [0;8];
let written = buf.write(&[1;8][..]).unwrap();
assert_eq!(written, 8);
buf.read(&mut out).unwrap();
assert_eq!(out, [1;8]);
let written = buf.write(&[2;8][..]).unwrap();
assert_eq!(written, 8);
let bytes_read = buf.read(&mut out).unwrap();
assert_eq!(bytes_read, 8);
assert_eq!(out, [2;8]);
}