aboutsummaryrefslogtreecommitdiff
path: root/tests/test_buf_mut.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_buf_mut.rs')
-rw-r--r--tests/test_buf_mut.rs55
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");
+}