ndhistogram 0.8.0

multi-dimensional histogramming for Rust
Documentation
use ndhistogram::axis::{Axis, BinInterval, Uniform};

#[test]
fn test_uniform_num_bins() {
    let ax = Uniform::with_step_size(3, 0, 2);
    assert_eq!(ax.num_bins(), 3 + 2)
}

#[test]
fn test_uniform_integer_get_index() {
    let ax = Uniform::with_step_size(3, -2, 2);
    let actual: Vec<usize> = (-3..5).map(|x| ax.index(&x).unwrap()).collect();
    let expected = vec![0, 1, 1, 2, 2, 3, 3, 4];
    assert_eq!(expected, actual)
}

#[test]
fn test_uniform_integer_get_bin() {
    let ax = Uniform::with_step_size(3, -2, 2);
    let actual: Vec<_> = (0..6).map(|it| ax.bin(it)).collect();
    let expected: Vec<_> = vec![
        Some(BinInterval::underflow(-2)),
        Some(BinInterval::new(-2, 0)),
        Some(BinInterval::new(0, 2)),
        Some(BinInterval::new(2, 4)),
        Some(BinInterval::overflow(4)),
        None,
    ];
    assert_eq!(expected, actual);
}

#[test]
#[should_panic]
fn test_uniform_with_step_size_should_panic_on_negative_step() {
    Uniform::with_step_size(10, 20.0, -1.0);
}

#[test]
#[should_panic]
fn test_uniform_with_step_size_should_panic_on_zero_step() {
    Uniform::with_step_size(10, 20.0, 0.0);
}