use crate::{take_bytes::TakeBytes, TakeBytesError};
#[test]
fn empty_slice_zero() {
[0; 0].as_slice().take_bytes(&mut []).unwrap();
}
#[test]
fn empty_slice_one() {
let mut buf = [b'x'; 1];
let err = [].as_slice().take_bytes(&mut buf).unwrap_err();
assert_eq!(err, TakeBytesError::Eof);
assert_eq!(buf, [b'x']);
}
#[test]
fn slice_zero() {
let mut slice = [1, 2, 3].as_slice();
slice.take_bytes(&mut []).unwrap();
assert_eq!(slice, [1, 2, 3]);
}
#[test]
fn slice_one() {
let mut slice = [1, 2, 3].as_slice();
let mut buf = [b'x'; 1];
slice.take_bytes(&mut buf).unwrap();
assert_eq!(buf, [1]);
assert_eq!(slice, [2, 3]);
}
#[test]
fn slice_two() {
let mut slice = [1, 2, 3].as_slice();
let mut buf = [b'x'; 2];
slice.take_bytes(&mut buf).unwrap();
assert_eq!(buf, [1, 2]);
assert_eq!(slice, [3]);
}
#[test]
fn slice_three() {
let mut slice = [1, 2, 3].as_slice();
let mut buf = [b'x'; 3];
slice.take_bytes(&mut buf).unwrap();
assert_eq!(buf, [1, 2, 3]);
assert_eq!(slice, []);
}
#[test]
fn slice_four() {
let mut slice = [1, 2, 3].as_slice();
let mut buf = [b'x'; 4];
let err = slice.take_bytes(&mut buf).unwrap_err();
assert_eq!(err, TakeBytesError::Eof);
assert_eq!(buf, [b'x', b'x', b'x', b'x']);
assert_eq!(slice, [1, 2, 3]);
}