use super::*;
#[test]
#[cfg_attr(miri, ignore)] fn trailing_chunk_test() {
let mut dest = vec![];
let mut source = vec![];
bolero::check!()
.with_type::<(u16, u16)>()
.for_each(|(dest_len, source_len)| {
source.resize(*source_len as usize, 42);
let dest_len = (*source_len).min(*dest_len) as usize;
dest.resize(dest_len, 0);
let expected = &source[..dest_len];
let dest = &mut dest[..];
{
let mut reader: &[u8] = &source[..];
let mut target = &mut dest[..];
let chunk = reader.partial_copy_into(&mut target).unwrap();
assert_eq!(expected, &*chunk);
assert!(
dest.iter().all(|b| *b == 0),
"no bytes should be copied into dest"
);
}
{
let io_slice = [&source[..]];
let mut reader = IoSlice::new(&io_slice);
let mut target = &mut dest[..];
let chunk = reader.partial_copy_into(&mut target).unwrap();
assert_eq!(expected, &*chunk);
assert!(
dest.iter().all(|b| *b == 0),
"no bytes should be copied into dest"
);
}
{
let mut slice = &source[..];
let mut reader = Buf::new(&mut slice);
let mut target = &mut dest[..];
let chunk = reader.partial_copy_into(&mut target).unwrap();
assert_eq!(expected, &*chunk);
assert!(
dest.iter().all(|b| *b == 0),
"no bytes should be copied into dest"
);
}
{
let mut source = &source[..];
let mut reader = source.full_copy();
let mut target = &mut dest[..];
let chunk = reader.partial_copy_into(&mut target).unwrap();
assert!(chunk.is_empty());
assert_eq!(expected, dest);
dest.fill(0);
}
});
}