use vyre_conform::adversarial::defender::corpus_metadata;
use vyre_conform::adversarial::{full_catalog, run_gauntlet};
use vyre_conform::registry::all_specs;
#[test]
fn defenders_hardcoded_zero_outcomes() {
let specs = all_specs();
let catalogs = full_catalog();
let report = run_gauntlet(&catalogs, &specs);
let meta = corpus_metadata();
assert!(!meta.is_empty(), "defender corpus empty — see build.rs");
for m in meta.iter().filter(|m| m.class == "hardcoded-zero") {
let finding = report
.findings
.iter()
.find(|f| f.defendant_id == m.id)
.unwrap_or_else(|| panic!("Missing gauntlet finding for defender {}", m.id));
let outcome_ok = match m.expected_outcome {
"Catch" => finding.caught,
"Escape" | "Unsupported" | "TargetMissing" => !finding.caught,
_ => panic!(
"Unknown expected_outcome '{}' for {}",
m.expected_outcome, m.id
),
};
assert!(
outcome_ok,
"Defender {} expected {} but got caught={}, witness_failed={}",
m.id, m.expected_outcome, finding.caught, finding.witness_failed
);
}
}