use std::fs;
#[test]
fn idempotent_simple_box() {
let input = fs::read_to_string("tests/data/unit/input/simple_box.txt")
.expect("Failed to read input fixture");
let result1 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Diagram,
&input,
false,
&ascfix::config::Config::default(),
);
let result2 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Diagram,
&result1,
false,
&ascfix::config::Config::default(),
);
assert_eq!(
result1.trim(),
result2.trim(),
"Idempotence failed for simple_box: first and second pass differ"
);
}
#[test]
fn idempotent_box_with_arrow() {
let input = fs::read_to_string("tests/data/unit/input/box_with_arrow.txt")
.expect("Failed to read input fixture");
let result1 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Diagram,
&input,
false,
&ascfix::config::Config::default(),
);
let result2 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Diagram,
&result1,
false,
&ascfix::config::Config::default(),
);
assert_eq!(
result1.trim(),
result2.trim(),
"Idempotence failed for box_with_arrow: first and second pass differ"
);
}
#[test]
fn idempotent_readme_dogfood() {
let readme = fs::read_to_string("tests/data/integration/readme_dogfood.md")
.expect("Failed to read README fixture");
let result1 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Safe, &readme,
false,
&ascfix::config::Config::default(),
);
let result2 = ascfix::modes::process_by_mode(
&ascfix::cli::Mode::Safe,
&result1,
false,
&ascfix::config::Config::default(),
);
assert_eq!(
result1.trim(),
result2.trim(),
"README idempotence failed: tool modified already well-formatted content"
);
let result1_lines = result1.lines().count();
let result2_lines = result2.lines().count();
assert_eq!(
result1_lines, result2_lines,
"README processing is not idempotent: {result1_lines} -> {result2_lines}"
);
}
#[test]
fn idempotent_baseline_tests_verify_conservative_behavior() {
}