entest 0.2.5

A rust implementation similar to ent tool: https://www.fourmilab.ch/random/
Documentation
use crate::*;

const LEN: usize = 10240;

#[test]
fn zero_data() {
    let all_zero_buf = [0u8; LEN];
    let ret = dbg!(Entest::test(&all_zero_buf));
    assert_eq!(ret.samples(), LEN as u64);
    assert_eq!(ret.chi(), &dec!(2611200.0));
    assert_eq!(ret.chi_prob(), &dec!(0.0));
    assert_eq!(ret.mc(), &dec!(4.0));
    assert_eq!(ret.mean(), &dec!(0.0));
    assert!(ret.sc().is_nan());
    assert_eq!(ret.shannon(), &dec!(0.0));
}

#[test]
fn std_random_state() {
    let mut std_random_state_buf = [0u8; LEN];
    let mut b;
    for chunk in std_random_state_buf.chunks_mut(8) {
        use std::hash::{Hasher, BuildHasher};
        use std::collections::hash_map::RandomState;
        b = RandomState::new().build_hasher().finish().to_ne_bytes();
        chunk[.. b.len()].copy_from_slice(&b);
    }
    let ret = dbg!(Entest::test(&std_random_state_buf));
    assert_eq!(ret.samples(), LEN as u64);
}

#[test]
fn predefined() {
    let predefined_data_buf = include_bytes!("tests.rand");

    let ret = dbg!(Entest::test(predefined_data_buf));
    assert_eq!(ret.samples(), LEN as u64);
    assert_eq!(ret.chi(), &dec!(293.0));
    assert_eq!(ret.chi_prob(), &dec!(0.05104028823948067937));
    assert_eq!(ret.mc(), &dec!(3.146541617819460727));
    assert_eq!(ret.mean(), &dec!(128.2646484375));
    assert_eq!(ret.sc(), &dec!(0.014631937126484728929));
    assert_eq!(ret.shannon(), &dec!(7.979134079303539237));
}