use crate::id::Id;
use crate::pager::Pager;
use crate::tests::setup_container_with_bsize;
#[test]
fn read() {
let mut container = setup_container_with_bsize(12);
let id = container.aquire().unwrap();
assert_eq!(
container
.write(&id, &[0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3])
.unwrap(),
12
);
let mut pager = Pager::new(container);
let mut reader = pager.read_buf(&Id::new(id)).unwrap();
assert_eq!(reader.read::<u32>().unwrap(), 1);
assert_eq!(reader.read::<u32>().unwrap(), 2);
assert_eq!(reader.read::<u32>().unwrap(), 3);
let err = reader.read::<u32>().unwrap_err();
assert!(matches!(err, nuts_bytes::Error::TakeBytes(cause)
if matches!(cause, nuts_bytes::TakeBytesError::Eof)));
}
#[test]
fn write() {
let mut pager = Pager::new(setup_container_with_bsize(12));
let id = pager.aquire().unwrap();
let mut buf = [0; 12];
let mut writer = pager.create_writer();
assert_eq!(writer.write(&1u32).unwrap(), 4);
assert_eq!(writer.write(&2u32).unwrap(), 4);
assert_eq!(writer.write(&3u32).unwrap(), 4);
let err = writer.write(&4u32).unwrap_err();
assert!(matches!(err, nuts_bytes::Error::PutBytes(cause)
if matches!(cause, nuts_bytes::PutBytesError::NoSpace)));
pager.write_buf(&id).unwrap();
assert_eq!(pager.read(&id, &mut buf).unwrap(), 12);
assert_eq!(buf, [0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3]);
}