use crate::workdir::Workdir;

#[test]
fn count() {
    let wrk = Workdir::new("count");
    wrk.create("data.csv", vec![svec!["n"], svec!["1"], svec!["2"]]);

    let mut cmd = wrk.command("count");
    cmd.arg("data.csv");

    let got: String = wrk.stdout(&mut cmd);

    assert_eq!(got.trim(), "2");
}

#[test]
fn count_no_headers() {
    let wrk = Workdir::new("count_no_headers");
    wrk.create("data.csv", vec![svec!["1"], svec!["2"]]);

    let mut cmd = wrk.command("count");
    cmd.arg("data.csv").arg("-n");

    let got: String = wrk.stdout(&mut cmd);

    assert_eq!(got.trim(), "2");
}

#[test]
fn count_no_rows() {
    let wrk = Workdir::new("count_no_rows");
    wrk.create("data.csv", vec![svec!["n"]]);

    let mut cmd = wrk.command("count");
    cmd.arg("data.csv");

    let got: String = wrk.stdout(&mut cmd);

    assert_eq!(got.trim(), "0");
}

#[test]
fn count_empty() {
    let wrk = Workdir::new("count_empty");
    wrk.create::<Vec<Vec<String>>>("data.csv", vec![]);

    let mut cmd = wrk.command("count");
    cmd.arg("data.csv");

    let got: String = wrk.stdout(&mut cmd);

    assert_eq!(got.trim(), "0");
}

#[test]
fn count_empty_no_headers() {
    let wrk = Workdir::new("count_empty_no_headers");
    wrk.create::<Vec<Vec<String>>>("data.csv", vec![]);

    let mut cmd = wrk.command("count");
    cmd.arg("data.csv").arg("-n");

    let got: String = wrk.stdout(&mut cmd);

    assert_eq!(got.trim(), "0");
}