use crate::huffman::freq::compute_frequencies;
use std::io::Cursor;
#[cfg(test)]
#[test]
fn freq_empty_slice() {
let buf: &[u8] = b"";
let mut cursor = Cursor::new(buf);
let (table, _, _) = compute_frequencies(&mut cursor).unwrap();
assert!(table.iter().all(|&c| c == 0));
}
#[test]
fn freq_single_byte() {
let buf: &[u8] = &[42];
let mut cursor = Cursor::new(buf);
let (table, _, _) = compute_frequencies(&mut cursor).unwrap();
assert_eq!(table[42], 1);
assert_eq!(table.iter().sum::<u64>(), 1);
}
#[test]
fn freq_known_mix() {
let buf: &[u8] = &[0, 0, 0, 1, 1, 2];
let mut cursor = Cursor::new(buf);
let (table, _, _) = compute_frequencies(&mut cursor).unwrap();
assert_eq!(table[0], 3);
assert_eq!(table[1], 2);
assert_eq!(table[2], 1);
assert_eq!(table.iter().sum::<u64>(), buf.len() as u64);
}
#[test]
fn freq_hello_world() {
let buf: &[u8] = b"hello world";
let mut cursor = Cursor::new(buf);
let (table, _, _) = compute_frequencies(&mut cursor).unwrap();
assert_eq!(table[b'h' as usize], 1);
assert_eq!(table[b'e' as usize], 1);
assert_eq!(table[b'l' as usize], 3);
assert_eq!(table[b'o' as usize], 2);
assert_eq!(table[b' ' as usize], 1);
assert_eq!(table[b'w' as usize], 1);
assert_eq!(table[b'r' as usize], 1);
assert_eq!(table[b'd' as usize], 1);
assert_eq!(table.iter().sum::<u64>(), buf.len() as u64);
}