#![cfg(feature = "cli")]
#[path = "common/mod.rs"]
mod common;
#[test]
fn ad010_precedence_ladder_explicit_w_wins() {
let (_tmp, _) = common::sandbox();
let _guard = common::env_guard("COLUMNS", Some("120"));
let assert = common::rusty_figlet_cmd()
.args(["-w", "60", "X"])
.assert()
.success();
let out = assert.get_output();
let stdout = String::from_utf8_lossy(&out.stdout);
for line in stdout.lines() {
assert!(
line.chars().count() <= 60,
"explicit -w 60 must cap width; got line ({}): {line:?}",
line.chars().count()
);
}
}
#[test]
fn ad010_precedence_ladder_columns_env_when_t_no_terminal() {
let (_tmp, _) = common::sandbox();
let _guard = common::env_guard("COLUMNS", Some("70"));
let assert = common::rusty_figlet_cmd()
.args(["-t", "X"])
.assert()
.success();
let out = assert.get_output();
let stdout = String::from_utf8_lossy(&out.stdout);
for line in stdout.lines() {
assert!(
line.chars().count() <= 70,
"with -t + COLUMNS=70 the width budget must be 70; got line ({}): {line:?}",
line.chars().count()
);
}
}
#[test]
fn ad010_precedence_ladder_default_fallback_is_80() {
let (_tmp, _) = common::sandbox();
let _guard = common::env_guard("COLUMNS", None);
let assert = common::rusty_figlet_cmd().args(["X"]).assert().success();
let out = assert.get_output();
let stdout = String::from_utf8_lossy(&out.stdout);
for line in stdout.lines() {
assert!(
line.chars().count() <= 80,
"default fallback must be ≤ 80; got line ({}): {line:?}",
line.chars().count()
);
}
}
#[test]
fn ad010_precedence_explicit_w_overrides_t() {
let (_tmp, _) = common::sandbox();
let _guard = common::env_guard("COLUMNS", Some("200"));
let assert = common::rusty_figlet_cmd()
.args(["-t", "-w", "50", "X"])
.assert()
.success();
let out = assert.get_output();
let stdout = String::from_utf8_lossy(&out.stdout);
for line in stdout.lines() {
assert!(
line.chars().count() <= 50,
"explicit -w 50 must beat -t; got line ({}): {line:?}",
line.chars().count()
);
}
}
#[test]
fn default_vs_strict_t_auto_apply() {
let (_tmp, _) = common::sandbox();
let _guard = common::env_guard("COLUMNS", None);
let default_assert = common::rusty_figlet_cmd().args(["X"]).assert().success();
let default_stdout = String::from_utf8_lossy(&default_assert.get_output().stdout).into_owned();
let strict_assert = common::rusty_figlet_cmd()
.args(["--strict", "X"])
.assert()
.success();
let strict_stdout = String::from_utf8_lossy(&strict_assert.get_output().stdout).into_owned();
for line in default_stdout.lines() {
assert!(
line.chars().count() <= 80,
"default mode line exceeds 80 cols: {line:?}"
);
}
for line in strict_stdout.lines() {
assert!(
line.chars().count() <= 80,
"strict mode line exceeds 80 cols: {line:?}"
);
}
assert!(
!default_stdout.is_empty() && !strict_stdout.is_empty(),
"both default and strict must render a banner; \
default={} bytes, strict={} bytes",
default_stdout.len(),
strict_stdout.len()
);
}