diff --git a/test/test.rs b/test/test.rs index 94dce0b1915a2a6b9c524f5bbc72515cfbbfeae9..283685f1d691564cc34c16de205cdcfcbcab7bda 100644 --- a/test/test.rs +++ b/test/test.rs @@ -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; diff --git a/test/test_ring.rs b/test/test_ring.rs new file mode 100644 index 0000000000000000000000000000000000000000..e740d232e9b712271535a7c81e1607ff62288833 --- /dev/null +++ b/test/test_ring.rs @@ -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]); +}