use wasm4pm_compat::conformance::{ConformanceVerdict, Deviation, Fitness};
#[test]
fn perfect_verdict_requires_full_fitness_and_no_deviations() {
let mut perfect = ConformanceVerdict::new();
perfect.fitness = Fitness::new(1.0);
assert!(perfect.deviations.is_empty());
assert!(
perfect.is_perfect(),
"fitness 1.0 + no deviations ⇒ perfect alignment"
);
}
#[test]
fn a_deviation_breaks_perfection_and_localises_the_problem() {
let mut v = ConformanceVerdict::new();
v.fitness = Fitness::new(1.0);
v.deviations.push(Deviation::new(2, "ship"));
assert!(
!v.is_perfect(),
"a deviation breaks perfection even at fitness 1.0"
);
assert_eq!(
v.deviations.len(),
1,
"the deviation is retained as a diagnostic"
);
}
#[test]
fn imperfect_fitness_is_not_perfect_even_without_deviations() {
let mut v = ConformanceVerdict::new();
v.fitness = Fitness::new(0.83);
assert!(!v.is_perfect(), "fitness < 1.0 ⇒ not perfect");
assert!(
!ConformanceVerdict::new().is_perfect(),
"absent fitness ⇒ not perfect"
);
}