use armour_core::{KeyScheme, KeyType};
#[test]
fn typed_u32_roundtrip() {
let s = KeyScheme::Typed(&[KeyType::U32]);
let bytes = s.from_str("12345").unwrap();
assert_eq!(bytes, 12345u32.to_be_bytes().to_vec());
assert_eq!(s.to_string_repr(&bytes).unwrap(), "12345");
}
#[test]
fn typed_composite_roundtrip() {
let s = KeyScheme::Typed(&[KeyType::U8, KeyType::U32, KeyType::U64]);
let input = "1-42-1000000";
let bytes = s.from_str(input).unwrap();
assert_eq!(s.to_string_repr(&bytes).unwrap(), input);
}
#[test]
fn typed_fuid_hex_roundtrip() {
let s = KeyScheme::Typed(&[KeyType::Fuid]);
let input = "abcdef0123456789";
let bytes = s.from_str(input).unwrap();
assert_eq!(s.to_string_repr(&bytes).unwrap(), input);
}
#[test]
fn typed_array_roundtrip() {
let s = KeyScheme::Typed(&[KeyType::Array(4)]);
let input = "deadbeef";
let bytes = s.from_str(input).unwrap();
assert_eq!(s.to_string_repr(&bytes).unwrap(), input);
}
#[test]
fn bytes_roundtrip() {
let s = KeyScheme::Bytes;
let input = "0102030405";
let bytes = s.from_str(input).unwrap();
assert_eq!(s.to_string_repr(&bytes).unwrap(), input);
}
#[test]
fn length_mismatch_error() {
let s = KeyScheme::Typed(&[KeyType::U32]);
let too_short = vec![0u8; 3];
assert!(s.to_string_repr(&too_short).is_err());
}