use assert_cmd::Command;
use predicates::prelude::*;
fn lawkit() -> Command {
Command::cargo_bin("lawkit").unwrap()
}
const SAMPLE_DATA: &str = "10\n20\n30\n40\n50\n60\n70\n80\n90\n100\n110\n120\n130\n140\n150\n160\n170\n180\n190\n200\n210\n220\n230\n240\n250\n260\n270\n280\n290\n300\n";
fn valid_exit_codes() -> impl predicates::Predicate<i32> {
predicate::in_iter([0, 10, 11])
}
#[test]
fn test_quiet_option() {
let mut cmd = lawkit();
cmd.args(["benf", "-q"]).write_stdin(SAMPLE_DATA);
cmd.assert()
.code(valid_exit_codes())
.stdout(predicate::str::is_empty().not());
}
#[test]
fn test_quiet_long_option() {
let mut cmd = lawkit();
cmd.args(["benf", "--quiet"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_verbose_option() {
let mut cmd = lawkit();
cmd.args(["benf", "-v"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_verbose_long_option() {
let mut cmd = lawkit();
cmd.args(["benf", "--verbose"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_no_color_option() {
let mut cmd = lawkit();
cmd.args(["benf", "--no-color"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_min_count_option() {
let mut cmd = lawkit();
cmd.args(["benf", "-c", "5"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_min_count_long_option() {
let mut cmd = lawkit();
cmd.args(["benf", "--min-count", "5"])
.write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_filter_greater_equal() {
let mut cmd = lawkit();
cmd.args(["benf", "--filter", ">=50"])
.write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_filter_less_than() {
let mut cmd = lawkit();
cmd.args(["benf", "--filter", "<280"])
.write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_filter_range() {
let mut cmd = lawkit();
cmd.args(["benf", "--filter", "20-280"])
.write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}
#[test]
fn test_stdin_explicit_dash() {
let mut cmd = lawkit();
cmd.args(["benf", "-"]).write_stdin(SAMPLE_DATA);
cmd.assert();
}
#[test]
fn test_stdin_implicit() {
let mut cmd = lawkit();
cmd.args(["benf"]).write_stdin(SAMPLE_DATA);
cmd.assert().code(valid_exit_codes());
}