diff options
Diffstat (limited to 'tests/test_buf_mut.rs')
-rw-r--r-- | tests/test_buf_mut.rs | 55 |
1 files changed, 32 insertions, 23 deletions
diff --git a/tests/test_buf_mut.rs b/tests/test_buf_mut.rs index b91e2e5..8d270e3 100644 --- a/tests/test_buf_mut.rs +++ b/tests/test_buf_mut.rs @@ -1,7 +1,6 @@ #![warn(rust_2018_idioms)] -#[cfg(feature = "std")] -use bytes::buf::IoSliceMut; +use bytes::buf::UninitSlice; use bytes::{BufMut, BytesMut}; use core::fmt::Write; use core::usize; @@ -12,7 +11,7 @@ fn test_vec_as_mut_buf() { assert_eq!(buf.remaining_mut(), usize::MAX); - assert!(buf.bytes_mut().len() >= 64); + assert!(buf.chunk_mut().len() >= 64); buf.put(&b"zomg"[..]); @@ -66,23 +65,6 @@ fn test_clone() { assert!(buf != buf2); } -#[cfg(feature = "std")] -#[test] -fn test_bufs_vec_mut() { - let b1: &mut [u8] = &mut []; - let b2: &mut [u8] = &mut []; - let mut dst = [IoSliceMut::from(b1), IoSliceMut::from(b2)]; - - // with no capacity - let mut buf = BytesMut::new(); - assert_eq!(buf.capacity(), 0); - assert_eq!(1, buf.bytes_vectored_mut(&mut dst[..])); - - // with capacity - let mut buf = BytesMut::with_capacity(64); - assert_eq!(1, buf.bytes_vectored_mut(&mut dst[..])); -} - #[test] fn test_mut_slice() { let mut v = vec![0, 0, 0, 0]; @@ -94,13 +76,13 @@ fn test_mut_slice() { fn test_deref_bufmut_forwards() { struct Special; - impl BufMut for Special { + unsafe impl BufMut for Special { fn remaining_mut(&self) -> usize { unreachable!("remaining_mut"); } - fn bytes_mut(&mut self) -> &mut [std::mem::MaybeUninit<u8>] { - unreachable!("bytes_mut"); + fn chunk_mut(&mut self) -> &mut UninitSlice { + unreachable!("chunk_mut"); } unsafe fn advance_mut(&mut self, _: usize) { @@ -118,3 +100,30 @@ fn test_deref_bufmut_forwards() { (Box::new(Special) as Box<dyn BufMut>).put_u8(b'x'); Box::new(Special).put_u8(b'x'); } + +#[test] +#[should_panic] +fn write_byte_panics_if_out_of_bounds() { + let mut data = [b'b', b'a', b'r']; + + let slice = unsafe { UninitSlice::from_raw_parts_mut(data.as_mut_ptr(), 3) }; + slice.write_byte(4, b'f'); +} + +#[test] +#[should_panic] +fn copy_from_slice_panics_if_different_length_1() { + let mut data = [b'b', b'a', b'r']; + + let slice = unsafe { UninitSlice::from_raw_parts_mut(data.as_mut_ptr(), 3) }; + slice.copy_from_slice(b"a"); +} + +#[test] +#[should_panic] +fn copy_from_slice_panics_if_different_length_2() { + let mut data = [b'b', b'a', b'r']; + + let slice = unsafe { UninitSlice::from_raw_parts_mut(data.as_mut_ptr(), 3) }; + slice.copy_from_slice(b"abcd"); +} |