armour-core 0.1.7

Core types for armour ecosystem
Documentation
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());
}