use super::elements_fit;
#[test]
fn an_element_count_from_a_header_cannot_size_an_allocation() {
assert_eq!(elements_fit(3, 1024, 1), 3, "an honest count is used as-is");
assert_eq!(
elements_fit(u32::MAX as usize, 0, 1),
1,
"a count with no bytes behind it reserves nothing worth having"
);
assert_eq!(
elements_fit(100_000_000, 4, 1),
5,
"four bytes cannot supply a hundred million elements"
);
assert_eq!(
elements_fit(100_000_000, 4, 2),
3,
"a map entry is a key and a value, so half as many again"
);
for len in [0usize, 1, 64, 4096] {
assert_eq!(elements_fit(len, len, 1), len, "len at {len} fits exactly");
}
}
#[test]
fn a_lying_array_header_is_still_an_error() {
use luna_core::version::LuaVersion;
let mut p = vec![0xddu8];
p.extend_from_slice(&u32::MAX.to_be_bytes());
let mut vm = super::Vm::new(LuaVersion::Lua54);
let mut cur = 0usize;
assert!(super::decode_value(&mut vm, &p, &mut cur, 0).is_err());
}