#![cfg(ra_small_profile)]
use rusty_alloc::prim::fixed::{
FERR_REGISTERED, MIN_REGION, Region, good_region_size, usable_bytes,
};
const N: usize = good_region_size(220 * 1024);
#[test]
fn a_region_given_once_serves_exactly_what_its_size_says() {
assert_eq!(N, 196_608);
assert_eq!(Region::<N>::USABLE, 196_608);
assert_eq!(
core::mem::size_of::<Region<N>>(),
N,
"no padding: whole segments, aligned"
);
let heap: &'static Region<N> =
Box::leak(unsafe { Box::<Region<N>>::new_zeroed().assume_init() });
assert_eq!(heap.usable(), Region::<N>::USABLE);
assert_eq!(heap.usable(), N, "nothing stranded, nothing reserved");
assert_eq!(heap.usable(), usable_bytes(0, N));
let usable = heap.give().expect("first give of an aligned, exact region");
assert_eq!(usable, 196_608);
assert_eq!(usable, Region::<N>::USABLE);
assert_eq!(heap.give(), Err(FERR_REGISTERED));
let other: &'static Region<MIN_REGION> =
Box::leak(unsafe { Box::<Region<MIN_REGION>>::new_zeroed().assume_init() });
assert_eq!(other.give(), Err(FERR_REGISTERED));
}