ruchy/notebook/testing/
report.rs1#[derive(Debug, Clone)]
3pub struct TestReport {
4 pub total_tests: usize,
5 pub passed_tests: usize,
6 pub failed_tests: usize,
7 pub coverage_percentage: f64,
8}
9
10impl TestReport {
11 pub fn new(total: usize, passed: usize, failed: usize, coverage: f64) -> Self {
21 Self {
22 total_tests: total,
23 passed_tests: passed,
24 failed_tests: failed,
25 coverage_percentage: coverage,
26 }
27 }
28
29 pub fn success_rate(&self) -> f64 {
39 if self.total_tests == 0 {
40 0.0
41 } else {
42 self.passed_tests as f64 / self.total_tests as f64
43 }
44 }
45}
46
47#[cfg(test)]
48mod tests {
49 use super::*;
50
51 #[test]
54 fn test_test_report_new() {
55 let report = TestReport::new(100, 85, 15, 75.5);
56 assert_eq!(report.total_tests, 100);
57 assert_eq!(report.passed_tests, 85);
58 assert_eq!(report.failed_tests, 15);
59 assert_eq!(report.coverage_percentage, 75.5);
60 }
61
62 #[test]
63 fn test_test_report_clone() {
64 let report = TestReport::new(50, 40, 10, 60.0);
65 let cloned = report;
66
67 assert_eq!(cloned.total_tests, 50);
68 assert_eq!(cloned.passed_tests, 40);
69 assert_eq!(cloned.failed_tests, 10);
70 assert_eq!(cloned.coverage_percentage, 60.0);
71 }
72
73 #[test]
74 fn test_success_rate_normal() {
75 let report = TestReport::new(100, 85, 15, 75.0);
76 assert_eq!(report.success_rate(), 0.85);
77 }
78
79 #[test]
80 fn test_success_rate_perfect() {
81 let report = TestReport::new(100, 100, 0, 100.0);
82 assert_eq!(report.success_rate(), 1.0);
83 }
84
85 #[test]
86 fn test_success_rate_zero_tests() {
87 let report = TestReport::new(0, 0, 0, 0.0);
88 assert_eq!(report.success_rate(), 0.0);
89 }
90
91 #[test]
92 fn test_success_rate_all_failed() {
93 let report = TestReport::new(50, 0, 50, 25.0);
94 assert_eq!(report.success_rate(), 0.0);
95 }
96
97 #[test]
98 fn test_debug_format() {
99 let report = TestReport::new(10, 8, 2, 80.0);
100 let debug_str = format!("{report:?}");
101 assert!(debug_str.contains("total_tests: 10"));
102 assert!(debug_str.contains("passed_tests: 8"));
103 assert!(debug_str.contains("failed_tests: 2"));
104 assert!(debug_str.contains("coverage_percentage: 80"));
105 }
106}