use crate::workdir::Workdir;

#[test]
fn reverse() {
    let wrk = Workdir::new("reverse");
    wrk.create(
        "data.csv",
        vec![svec!["n"], svec!["1"], svec!["2"], svec!["3"]],
    );
    let mut cmd = wrk.command("reverse");
    cmd.arg("data.csv");

    let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
    let expected = vec![svec!["n"], svec!["3"], svec!["2"], svec!["1"]];
    assert_eq!(got, expected);
}

#[test]
fn reverse_no_headers() {
    let wrk = Workdir::new("reverse_no_headers");
    wrk.create("data.csv", vec![svec!["1"], svec!["2"], svec!["3"]]);
    let mut cmd = wrk.command("reverse");
    cmd.arg("-n").arg("data.csv");

    let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
    let expected = vec![svec!["3"], svec!["2"], svec!["1"]];
    assert_eq!(got, expected);
}

#[test]
fn reverse_empty() {
    let wrk = Workdir::new("reverse_empty");
    wrk.create::<Vec<Vec<String>>>("data.csv", vec![]);
    let mut cmd = wrk.command("reverse");
    cmd.arg("data.csv");

    let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
    assert_eq!(got, Vec::<Vec<String>>::new());
}