hfmn 0.1.0

A flexible Huffman coding implementation
Documentation
use hfmn::HfmnCode;

#[test]
fn test_ab_coding() {
    let data = "ab";

    let coding = hfmn::CodeBook::from_data(data).unwrap();
    let result = coding.encode_data(data).unwrap();

    assert_eq!(
        result,
        vec![&HfmnCode::from(0b0, 1), &HfmnCode::from(0b1, 1),]
    )
}

#[test]
fn test_aba_coding() {
    let data = "aba";

    let coding = hfmn::CodeBook::from_data(data).unwrap();
    let result = coding.encode_data(data).unwrap();

    assert_eq!(
        result,
        vec![
            &HfmnCode::from(0b0, 1),
            &HfmnCode::from(0b1, 1),
            &HfmnCode::from(0b0, 1),
        ]
    )
}

#[test]
fn test_abc_coding() {
    let data = "abc";

    let coding = hfmn::CodeBook::from_data(data).unwrap();
    let result = coding.encode_data(data).unwrap();

    assert_eq!(
        result,
        vec![
            &HfmnCode::from(0b10, 2),
            &HfmnCode::from(0b11, 2),
            &HfmnCode::from(0b0, 1),
        ]
    )
}

#[test]
fn test_abbccc_coding() {
    let data = "abbccc";

    let coding = hfmn::CodeBook::from_data(data).unwrap();
    let result = coding.encode_data(data).unwrap();

    assert_eq!(
        result,
        vec![
            &HfmnCode::from(0b10, 2),
            &HfmnCode::from(0b11, 2),
            &HfmnCode::from(0b11, 2),
            &HfmnCode::from(0b0, 1),
            &HfmnCode::from(0b0, 1),
            &HfmnCode::from(0b0, 1)
        ]
    )
}