use crate::domain::Dimension;
#[test]
fn parse_known_dimensions_case_insensitive() {
assert_eq!(Dimension::from_str_opt("iosp"), Some(Dimension::Iosp));
assert_eq!(Dimension::from_str_opt("IOSP"), Some(Dimension::Iosp));
assert_eq!(Dimension::from_str_opt("Iosp"), Some(Dimension::Iosp));
assert_eq!(
Dimension::from_str_opt("complexity"),
Some(Dimension::Complexity)
);
assert_eq!(Dimension::from_str_opt("dry"), Some(Dimension::Dry));
assert_eq!(Dimension::from_str_opt("srp"), Some(Dimension::Srp));
assert_eq!(
Dimension::from_str_opt("coupling"),
Some(Dimension::Coupling)
);
}
#[test]
fn parse_test_quality_accepts_all_aliases() {
assert_eq!(
Dimension::from_str_opt("test_quality"),
Some(Dimension::TestQuality)
);
assert_eq!(Dimension::from_str_opt("tq"), Some(Dimension::TestQuality));
assert_eq!(
Dimension::from_str_opt("test"),
Some(Dimension::TestQuality)
);
}
#[test]
fn parse_architecture_dimension() {
assert_eq!(
Dimension::from_str_opt("architecture"),
Some(Dimension::Architecture)
);
assert_eq!(
Dimension::from_str_opt("Architecture"),
Some(Dimension::Architecture)
);
}
#[test]
fn parse_unknown_returns_none() {
assert_eq!(Dimension::from_str_opt(""), None);
assert_eq!(Dimension::from_str_opt("unknown"), None);
assert_eq!(Dimension::from_str_opt("performance"), None);
}
#[test]
fn display_matches_canonical_name() {
assert_eq!(format!("{}", Dimension::Iosp), "iosp");
assert_eq!(format!("{}", Dimension::Complexity), "complexity");
assert_eq!(format!("{}", Dimension::Dry), "dry");
assert_eq!(format!("{}", Dimension::Srp), "srp");
assert_eq!(format!("{}", Dimension::Coupling), "coupling");
assert_eq!(format!("{}", Dimension::TestQuality), "test_quality");
assert_eq!(format!("{}", Dimension::Architecture), "architecture");
}
#[test]
fn display_roundtrips_via_from_str_opt() {
let all = [
Dimension::Iosp,
Dimension::Complexity,
Dimension::Dry,
Dimension::Srp,
Dimension::Coupling,
Dimension::TestQuality,
Dimension::Architecture,
];
for d in all {
let s = format!("{d}");
assert_eq!(
Dimension::from_str_opt(&s),
Some(d),
"Display output must roundtrip through from_str_opt for {d:?}"
);
}
}