meansd-cli 1.3.0

calculate mean and standard deviation (CLI)
use assert_cmd::crate_name;
use assert_cmd::Command;
use predicates::prelude::*;
use std::error::Error;

#[test]
fn meansd() -> Result<(), Box<dyn Error>> {
    let mut cmd = Command::cargo_bin(crate_name!()).unwrap();
    cmd.args(&["--progress", "3"]);

    cmd.write_stdin("1 \n 2 \n 3");

    cmd.assert()
        .success()
        .stderr(predicate::str::contains("progress 3: n=3 ∅ 2 ± 1"))
        .stdout(predicate::str::contains("n=3 ∅ 2 ± 1"));

    Ok(())
}

#[test]
fn binned() -> Result<(), Box<dyn Error>> {
    let mut cmd = Command::cargo_bin(crate_name!()).unwrap();
    cmd.args(&["--progress", "3"]);
    cmd.args(&["--bin-width", "5"]);

    cmd.write_stdin("2 \n 3 \n 4 \n 5 \n 6 \n 7 \n");

    cmd.assert()
        .success()
        .stderr(predicate::str::contains("progress 3: 0 - 5 → n=3 ∅ 3 ± 1"))
        .stderr(predicate::str::contains("progress 6: 0 - 5 → n=3 ∅ 3 ± 1"))
        .stderr(predicate::str::contains("progress 6: 5 - 10 → n=3 ∅ 6 ± 1"))
        .stdout(predicate::str::contains("0  5    3    3  1"))
        .stdout(predicate::str::contains("5 10    3    6  1"))
        .stdout(predicate::str::contains("n=6 ∅ 4.5 ± 1.87"));

    Ok(())
}