use crate::workdir::Workdir;

#[test]
fn range() {
    let wrk = Workdir::new("range");

    let mut cmd = wrk.command("range");
    cmd.arg("3");

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

#[test]
fn range_column_name() {
    let wrk = Workdir::new("range_column_name");

    let mut cmd = wrk.command("range");
    cmd.arg("3").args(&["-c", "id"]);

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

#[test]
fn range_start() {
    let wrk = Workdir::new("range_start");

    let mut cmd = wrk.command("range");
    cmd.arg("3").args(&["-s", "1"]);

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

#[test]
fn range_step() {
    let wrk = Workdir::new("range_step");

    let mut cmd = wrk.command("range");
    cmd.arg("11").args(&["--step", "5"]);

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

#[test]
fn range_inclusive() {
    let wrk = Workdir::new("range_inclusive");

    let mut cmd = wrk.command("range");
    cmd.arg("3").arg("-i");

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