sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
use sciforge::benchmark::engine::{
    BENCHMARK_HEADER_SIZE, BENCHMARK_MAGIC, BENCHMARK_VERSION, CSV_HEADER, bench,
};

#[test]
fn bench_runs_closure() {
    let m = bench("add", "f64", 100, || 2 + 2);
    assert_eq!(m.experiment_name, "add");
    assert_eq!(m.precision, "f64");
    assert_eq!(m.iterations, 100);
    assert!(m.avg_time_ns > 0.0);
}

#[test]
fn bench_zero_iterations() {
    let m = bench("noop", "f64", 0, || {});
    assert_eq!(m.iterations, 0);
    assert_eq!(m.elapsed_ms, 0);
}

#[test]
fn csv_header_field_count() {
    let cols: Vec<&str> = CSV_HEADER.split(',').collect();
    assert_eq!(cols[0], "experiment_name");
    assert_eq!(cols.len(), 10);
    assert_eq!(*cols.last().unwrap(), "result");
}

#[test]
fn to_csv_row_matches_header() {
    let m = bench("x", "f32", 10, || 1 + 1);
    let row = m.to_csv_row();
    assert_eq!(row.split(',').count(), CSV_HEADER.split(',').count() - 1);
}

#[test]
fn magic_bytes() {
    assert_eq!(&BENCHMARK_MAGIC, &[b'B', b'M', b'K', 0x01]);
}

#[test]
fn version_is_4() {
    assert_eq!(BENCHMARK_VERSION, 4);
}

#[test]
fn header_size_is_168() {
    assert_eq!(BENCHMARK_HEADER_SIZE, 168);
}