diff options
Diffstat (limited to 'vendor/bytes/tests/test_chain.rs')
| -rw-r--r-- | vendor/bytes/tests/test_chain.rs | 177 |
1 files changed, 0 insertions, 177 deletions
diff --git a/vendor/bytes/tests/test_chain.rs b/vendor/bytes/tests/test_chain.rs deleted file mode 100644 index cfda6b8d..00000000 --- a/vendor/bytes/tests/test_chain.rs +++ /dev/null @@ -1,177 +0,0 @@ -#![warn(rust_2018_idioms)] - -use bytes::{Buf, BufMut, Bytes}; -#[cfg(feature = "std")] -use std::io::IoSlice; - -#[test] -fn collect_two_bufs() { - let a = Bytes::from(&b"hello"[..]); - let b = Bytes::from(&b"world"[..]); - - let res = a.chain(b).copy_to_bytes(10); - assert_eq!(res, &b"helloworld"[..]); -} - -#[test] -fn writing_chained() { - let mut a = [0u8; 64]; - let mut b = [0u8; 64]; - - { - let mut buf = (&mut a[..]).chain_mut(&mut b[..]); - - for i in 0u8..128 { - buf.put_u8(i); - } - } - - for i in 0..64 { - let expect = i as u8; - assert_eq!(expect, a[i]); - assert_eq!(expect + 64, b[i]); - } -} - -#[test] -fn iterating_two_bufs() { - let a = Bytes::from(&b"hello"[..]); - let b = Bytes::from(&b"world"[..]); - - let res: Vec<u8> = a.chain(b).into_iter().collect(); - assert_eq!(res, &b"helloworld"[..]); -} - -#[cfg(feature = "std")] -#[test] -fn vectored_read() { - let a = Bytes::from(&b"hello"[..]); - let b = Bytes::from(&b"world"[..]); - - let mut buf = a.chain(b); - - { - let b1: &[u8] = &mut []; - let b2: &[u8] = &mut []; - let b3: &[u8] = &mut []; - let b4: &[u8] = &mut []; - let mut iovecs = [ - IoSlice::new(b1), - IoSlice::new(b2), - IoSlice::new(b3), - IoSlice::new(b4), - ]; - - assert_eq!(2, buf.chunks_vectored(&mut iovecs)); - assert_eq!(iovecs[0][..], b"hello"[..]); - assert_eq!(iovecs[1][..], b"world"[..]); - assert_eq!(iovecs[2][..], b""[..]); - assert_eq!(iovecs[3][..], b""[..]); - } - - buf.advance(2); - - { - let b1: &[u8] = &mut []; - let b2: &[u8] = &mut []; - let b3: &[u8] = &mut []; - let b4: &[u8] = &mut []; - let mut iovecs = [ - IoSlice::new(b1), - IoSlice::new(b2), - IoSlice::new(b3), - IoSlice::new(b4), - ]; - - assert_eq!(2, buf.chunks_vectored(&mut iovecs)); - assert_eq!(iovecs[0][..], b"llo"[..]); - assert_eq!(iovecs[1][..], b"world"[..]); - assert_eq!(iovecs[2][..], b""[..]); - assert_eq!(iovecs[3][..], b""[..]); - } - - buf.advance(3); - - { - let b1: &[u8] = &mut []; - let b2: &[u8] = &mut []; - let b3: &[u8] = &mut []; - let b4: &[u8] = &mut []; - let mut iovecs = [ - IoSlice::new(b1), - IoSlice::new(b2), - IoSlice::new(b3), - IoSlice::new(b4), - ]; - - assert_eq!(1, buf.chunks_vectored(&mut iovecs)); - assert_eq!(iovecs[0][..], b"world"[..]); - assert_eq!(iovecs[1][..], b""[..]); - assert_eq!(iovecs[2][..], b""[..]); - assert_eq!(iovecs[3][..], b""[..]); - } - - buf.advance(3); - - { - let b1: &[u8] = &mut []; - let b2: &[u8] = &mut []; - let b3: &[u8] = &mut []; - let b4: &[u8] = &mut []; - let mut iovecs = [ - IoSlice::new(b1), - IoSlice::new(b2), - IoSlice::new(b3), - IoSlice::new(b4), - ]; - - assert_eq!(1, buf.chunks_vectored(&mut iovecs)); - assert_eq!(iovecs[0][..], b"ld"[..]); - assert_eq!(iovecs[1][..], b""[..]); - assert_eq!(iovecs[2][..], b""[..]); - assert_eq!(iovecs[3][..], b""[..]); - } -} - -#[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"); - let ab_ptr = ab.as_ptr(); - let cd_ptr = cd.as_ptr(); - let mut chain = (&mut ab).chain(&mut cd); - let a = chain.copy_to_bytes(1); - let bc = chain.copy_to_bytes(2); - let d = chain.copy_to_bytes(1); - - assert_eq!(Bytes::copy_from_slice(b"a"), a); - assert_eq!(Bytes::copy_from_slice(b"bc"), bc); - assert_eq!(Bytes::copy_from_slice(b"d"), d); - - // assert `get_bytes` did not allocate - assert_eq!(ab_ptr, a.as_ptr()); - // assert `get_bytes` did not allocate - assert_eq!(cd_ptr.wrapping_offset(1), d.as_ptr()); -} |
