ferrous_forge/test_coverage/
tests.rs1#[cfg(test)]
4#[allow(
5 clippy::unwrap_used,
6 clippy::expect_used,
7 clippy::panic,
8 clippy::module_inception
9)]
10mod tests {
11 use super::super::*;
12 use std::collections::HashMap;
13
14 #[test]
15 fn test_coverage_config_default() {
16 let config = CoverageConfig::default();
17 assert_eq!(config.min_line_coverage, 80.0);
18 assert_eq!(config.min_function_coverage, 85.0);
19 assert_eq!(config.min_branch_coverage, 75.0);
20 assert!(config.fail_on_low_coverage);
21 }
22
23 #[test]
24 fn test_coverage_analyzer_creation() {
25 let analyzer = CoverageAnalyzer::new();
26 assert_eq!(analyzer.config().min_line_coverage, 80.0);
27
28 let custom_config = CoverageConfig {
29 min_line_coverage: 90.0,
30 ..Default::default()
31 };
32 let custom_analyzer = CoverageAnalyzer::with_config(custom_config);
33 assert_eq!(custom_analyzer.config().min_line_coverage, 90.0);
34 }
35
36 #[test]
37 fn test_validate_coverage_success() {
38 let analyzer = CoverageAnalyzer::new();
39 let report = CoverageReport {
40 line_coverage: 85.0,
41 function_coverage: 90.0,
42 branch_coverage: 80.0,
43 file_coverage: HashMap::new(),
44 lines_tested: 85,
45 total_lines: 100,
46 functions_tested: 18,
47 total_functions: 20,
48 branches_tested: 8,
49 total_branches: 10,
50 };
51
52 assert!(analyzer.validate_coverage(&report).is_ok());
53 }
54
55 #[test]
56 fn test_validate_coverage_failure() {
57 let analyzer = CoverageAnalyzer::new();
58 let report = CoverageReport {
59 line_coverage: 70.0, function_coverage: 90.0,
61 branch_coverage: 80.0,
62 file_coverage: HashMap::new(),
63 lines_tested: 70,
64 total_lines: 100,
65 functions_tested: 18,
66 total_functions: 20,
67 branches_tested: 8,
68 total_branches: 10,
69 };
70
71 assert!(analyzer.validate_coverage(&report).is_err());
72 }
73
74 #[test]
75 fn test_format_coverage_report() {
76 let analyzer = CoverageAnalyzer::new();
77 let report = CoverageReport {
78 line_coverage: 85.0,
79 function_coverage: 90.0,
80 branch_coverage: 80.0,
81 file_coverage: HashMap::new(),
82 lines_tested: 85,
83 total_lines: 100,
84 functions_tested: 18,
85 total_functions: 20,
86 branches_tested: 8,
87 total_branches: 10,
88 };
89
90 let formatted = analyzer.format_coverage_report(&report);
91 assert!(formatted.contains("Test Coverage Report"));
92 assert!(formatted.contains("85.0%"));
93 assert!(formatted.contains("90.0%"));
94 assert!(formatted.contains("80.0%"));
95 }
96}