use crate::burnpack::base::*;
#[test]
fn test_header_serialization() {
let header = BurnpackHeader::new(12345);
assert_eq!(header.magic, MAGIC_NUMBER);
assert_eq!(header.version, FORMAT_VERSION);
assert_eq!(header.metadata_size, 12345);
let bytes = header.into_bytes();
assert_eq!(bytes.len(), HEADER_SIZE);
let header2 = BurnpackHeader::from_bytes(&bytes).unwrap();
assert_eq!(header2.magic, header.magic);
assert_eq!(header2.version, header.version);
assert_eq!(header2.metadata_size, header.metadata_size);
}
#[test]
fn test_header_invalid_magic() {
let mut bytes = [0u8; HEADER_SIZE];
bytes[0..4].copy_from_slice(&[0x00, 0x00, 0x00, 0x00]);
let result = BurnpackHeader::from_bytes(&bytes);
match result {
Err(BurnpackError::InvalidMagicNumber) => {}
_ => panic!("Expected InvalidMagicNumber error"),
}
}
#[test]
fn test_header_insufficient_bytes() {
let bytes = [0u8; 5];
let result = BurnpackHeader::from_bytes(&bytes);
match result {
Err(BurnpackError::InvalidHeader) => {}
_ => panic!("Expected InvalidHeader error"),
}
}
#[test]
fn test_version_compatibility() {
let header = BurnpackHeader::new(100);
let bytes = header.into_bytes();
let result = BurnpackHeader::from_bytes(&bytes);
assert!(result.is_ok());
let header = result.unwrap();
assert_eq!(header.version, FORMAT_VERSION);
}