diff options
Diffstat (limited to 'tests/test_chain.rs')
-rw-r--r-- | tests/test_chain.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tests/test_chain.rs b/tests/test_chain.rs index affaf7a..cfda6b8 100644 --- a/tests/test_chain.rs +++ b/tests/test_chain.rs @@ -134,6 +134,28 @@ fn vectored_read() { } #[test] +fn chain_growing_buffer() { + let mut buff = [' ' as u8; 10]; + let mut vec = b"wassup".to_vec(); + + let mut chained = (&mut buff[..]).chain_mut(&mut vec).chain_mut(Vec::new()); // Required for potential overflow because remaining_mut for Vec is isize::MAX - vec.len(), but for chain_mut is usize::MAX + + chained.put_slice(b"hey there123123"); + + assert_eq!(&buff, b"hey there1"); + assert_eq!(&vec, b"wassup23123"); +} + +#[test] +fn chain_overflow_remaining_mut() { + let mut chained = Vec::<u8>::new().chain_mut(Vec::new()).chain_mut(Vec::new()); + + assert_eq!(chained.remaining_mut(), usize::MAX); + chained.put_slice(&[0; 256]); + assert_eq!(chained.remaining_mut(), usize::MAX); +} + +#[test] fn chain_get_bytes() { let mut ab = Bytes::copy_from_slice(b"ab"); let mut cd = Bytes::copy_from_slice(b"cd"); |