use codex32::{Codex32String, Fe};
#[test]
fn mnem_byte_aligned_constructs_for_all_five_lengths() {
let mut lengths = vec![];
for n in [16usize, 20, 24, 28, 32] {
let mut data = vec![0x02u8, 0x00u8]; data.extend(std::iter::repeat(0xABu8).take(n));
let c = Codex32String::from_seed("ms", 0, "entr", Fe::S, &data)
.unwrap_or_else(|e| panic!("N={n}: from_seed failed (sanity_check?): {e:?}"));
let s = c.to_string();
let back = Codex32String::from_string(s.clone())
.unwrap()
.parts()
.data();
assert_eq!(back[0], 0x02, "N={n} prefix byte");
assert_eq!(back[1], 0x00, "N={n} language byte");
assert_eq!(&back[2..2 + n], &data[2..], "N={n} entropy");
lengths.push(s.len());
}
assert_eq!(
lengths,
vec![51, 58, 64, 70, 77],
"VALID_MNEM_STR_LENGTHS (byte-aligned)"
);
}