use crate::app::architecture::{count_architecture_warnings, mark_architecture_suppressions};
use crate::domain::{Dimension, Finding, Severity};
use std::collections::HashMap;
fn arch_finding(line: usize, suppressed: bool) -> Finding {
Finding {
file: "src/x.rs".into(),
line,
column: 0,
dimension: Dimension::Architecture,
rule_id: "architecture/layer".into(),
message: String::new(),
severity: Severity::Medium,
suppressed,
}
}
fn marker(line: usize, dim: Dimension) -> HashMap<String, Vec<crate::findings::Suppression>> {
[(
"src/x.rs".to_string(),
vec![crate::findings::Suppression {
line,
dimensions: vec![dim],
reason: None,
}],
)]
.into()
}
#[test]
fn architecture_marker_in_window_suppresses_finding() {
let mut findings = vec![arch_finding(6, false)];
mark_architecture_suppressions(&mut findings, &marker(5, Dimension::Architecture));
assert!(
findings[0].suppressed,
"an in-window architecture marker must suppress the finding"
);
}
#[test]
fn architecture_marker_must_cover_the_architecture_dimension() {
let mut findings = vec![arch_finding(6, false)];
mark_architecture_suppressions(&mut findings, &marker(5, Dimension::Complexity));
assert!(
!findings[0].suppressed,
"an in-window marker for another dimension must not suppress architecture"
);
}
#[test]
fn count_architecture_warnings_excludes_suppressed() {
let findings = vec![
arch_finding(1, false),
arch_finding(2, false),
arch_finding(3, true),
];
assert_eq!(count_architecture_warnings(&findings), 2);
}