use assert_cmd::Command;
use predicates::prelude::*;
fn lawkit() -> Command {
Command::cargo_bin("lawkit").unwrap()
}
fn generate_sample() -> Command {
let mut cmd = Command::cargo_bin("lawkit").unwrap();
cmd.args(["generate", "benf", "--samples", "50"]);
cmd
}
#[test]
fn output_generate_plain_text() {
generate_sample()
.assert()
.success()
.stdout(predicate::str::is_empty().not());
}
#[test]
fn output_format_not_available_for_generate() {
generate_sample()
.args(["--format", "json"])
.assert()
.failure()
.code(2); }
#[test]
fn output_no_color() {
let output = generate_sample().arg("--no-color").output().unwrap();
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(
!stdout.contains("\x1b["),
"Output should not contain ANSI codes: {stdout}"
);
}
#[test]
fn output_quiet() {
let output = generate_sample().arg("--quiet").output().unwrap();
let stdout = String::from_utf8_lossy(&output.stdout);
assert!(output.status.success());
}
#[test]
fn output_quiet_short_form() {
generate_sample().arg("-q").assert().success();
}
#[test]
fn output_verbose() {
generate_sample().arg("--verbose").assert().success();
}
#[test]
fn output_verbose_short_form() {
generate_sample().arg("-v").assert().success();
}
#[test]
fn output_help() {
lawkit()
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Usage"))
.stdout(predicate::str::contains("Options"));
}
#[test]
fn output_help_short() {
lawkit()
.arg("-h")
.assert()
.success()
.stdout(predicate::str::contains("Usage"));
}
#[test]
fn output_version() {
lawkit()
.arg("--version")
.assert()
.success()
.stdout(predicate::str::contains("lawkit"));
}
#[test]
fn output_version_short() {
lawkit()
.arg("-V")
.assert()
.success()
.stdout(predicate::str::contains("lawkit"));
}
#[test]
fn output_subcommand_help_benf() {
lawkit()
.arg("benf")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Benford"));
}
#[test]
fn output_subcommand_help_pareto() {
lawkit()
.arg("pareto")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Pareto"));
}
#[test]
fn output_subcommand_help_zipf() {
lawkit()
.arg("zipf")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Zipf"));
}
#[test]
fn output_subcommand_help_normal() {
lawkit()
.arg("normal")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Normal").or(predicate::str::contains("normal")));
}
#[test]
fn output_subcommand_help_poisson() {
lawkit()
.arg("poisson")
.arg("--help")
.assert()
.success()
.stdout(predicate::str::contains("Poisson").or(predicate::str::contains("poisson")));
}