pub(crate) mod decoder;
pub(crate) mod frame;
pub(crate) mod huffman;
pub mod streaming;
pub use streaming::extract_literals;
#[cfg(test)]
mod tests {
use super::decoder::extract_literals_from_block;
use super::frame::{parse_frame_header, BlockType};
use crate::ZiftError;
#[test]
fn test_parse_frame_header_invalid_magic() {
let data = [0x00, 0x00, 0x00, 0x00];
let mut pos = 0;
assert!(parse_frame_header(&data, &mut pos).is_err());
}
#[test]
fn test_block_type_parsing() {
assert_eq!(BlockType::from_u8(0), Some(BlockType::Raw));
assert_eq!(BlockType::from_u8(1), Some(BlockType::Rle));
assert_eq!(BlockType::from_u8(2), Some(BlockType::Compressed));
assert_eq!(BlockType::from_u8(3), Some(BlockType::Reserved));
assert_eq!(BlockType::from_u8(4), None);
}
#[test]
fn test_treeless_compressed_literals_error() {
let data = [0x03]; let result = extract_literals_from_block(&data);
assert!(
matches!(result, Err(ZiftError::InvalidData { ref reason, .. }) if reason.contains("treeless"))
);
}
}