use crate::adapters::analyzers::tq::{TqAnalysis, TqWarning, TqWarningKind};
use crate::app::tq_metrics::*;
use crate::findings::Dimension;
use crate::report::Summary;
fn warning(line: usize, kind: TqWarningKind, suppressed: bool) -> TqWarning {
TqWarning {
file: "test.rs".to_string(),
line,
function_name: "t".to_string(),
kind,
suppressed,
}
}
fn tq_suppressed(w_line: usize, sup_line: usize, dim: Dimension) -> bool {
let mut tq = TqAnalysis {
warnings: vec![warning(w_line, TqWarningKind::NoAssertion, false)],
};
let sups = super::one_suppression(sup_line, dim);
mark_tq_suppressions(Some(&mut tq), &sups);
tq.warnings[0].suppressed
}
#[test]
fn tq_suppression_window_and_dimension() {
let t = Dimension::TestQuality;
assert!(tq_suppressed(5, 5, t)); assert!(tq_suppressed(6, 1, t)); assert!(!tq_suppressed(7, 1, t)); assert!(!tq_suppressed(5, 5, Dimension::Complexity)); assert!(!tq_suppressed(10, 2, t)); assert!(!tq_suppressed(2, 5, t)); }
#[test]
fn count_tq_warnings_splits_by_kind() {
let tq = TqAnalysis {
warnings: vec![
warning(1, TqWarningKind::NoAssertion, false),
warning(2, TqWarningKind::NoSut, false),
warning(3, TqWarningKind::Untested, false),
warning(4, TqWarningKind::Uncovered, false),
warning(
5,
TqWarningKind::UntestedLogic {
uncovered_lines: vec![("test.rs".to_string(), 5)],
},
false,
),
],
};
let mut summary = Summary::from_results(&[]);
count_tq_warnings(Some(&tq), &mut summary);
assert_eq!(summary.tq_no_assertion_warnings, 1);
assert_eq!(summary.tq_no_sut_warnings, 1);
assert_eq!(summary.tq_untested_warnings, 1);
assert_eq!(summary.tq_uncovered_warnings, 1);
assert_eq!(summary.tq_untested_logic_warnings, 1);
}