use crate::workdir::Workdir;
#[test]
fn sample() {
let wrk = Workdir::new("sample");
wrk.create(
"data.csv",
vec![
svec!["number"],
svec!["1"],
svec!["2"],
svec!["3"],
svec!["4"],
],
);
let mut cmd = wrk.command("sample");
cmd.arg("2").arg("data.csv").args(["--seed", "123"]);
let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
let expected = vec![svec!["number"], svec!["3"], svec!["2"]];
assert_eq!(got, expected);
}
#[test]
fn sample_grouped() {
let wrk = Workdir::new("sample_grouped");
wrk.create(
"data.csv",
vec![
svec!["number", "group"],
svec!["1", "group1"],
svec!["2", "group1"],
svec!["3", "group1"],
svec!["4", "group2"],
],
);
let mut cmd = wrk.command("sample");
cmd.arg("2")
.arg("data.csv")
.args(["--seed", "123"])
.args(["-g", "group"]);
let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
let expected = vec![
svec!["number", "group"],
svec!["3", "group1"],
svec!["2", "group1"],
svec!["4", "group2"],
];
assert_eq!(got, expected);
}
#[test]
fn sample_weighted() {
let wrk = Workdir::new("sample_weighted");
wrk.create(
"data.csv",
vec![
svec!["number", "weight"],
svec!["1", "0.001"],
svec!["2", "0.001"],
svec!["3", "0.5"],
svec!["4", "0.9"],
],
);
let mut cmd = wrk.command("sample");
cmd.arg("2")
.args(["--weight", "weight"])
.arg("data.csv")
.args(["--seed", "123"]);
let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
let expected = vec![
svec!["number", "weight"],
svec!["3", "0.5"],
svec!["4", "0.9"],
];
assert_eq!(got, expected);
}
#[test]
fn sample_weighted_grouped() {
let wrk = Workdir::new("sample_weighted_grouped");
wrk.create(
"data.csv",
vec![
svec!["number", "weight", "group"],
svec!["1", "0.001", "group1"],
svec!["2", "0.001", "group1"],
svec!["3", "0.5", "group1"],
svec!["4", "0.9", "group2"],
],
);
let mut cmd = wrk.command("sample");
cmd.arg("2")
.args(["--weight", "weight"])
.arg("data.csv")
.args(["--seed", "123"])
.args(["-g", "group"]);
let got: Vec<Vec<String>> = wrk.read_stdout(&mut cmd);
let expected = vec![
svec!["number", "weight", "group"],
svec!["1", "0.001", "group1"],
svec!["3", "0.5", "group1"],
svec!["4", "0.9", "group2"],
];
assert_eq!(got, expected);
}