1use std::time::Duration;
6
7pub fn format_elapsed(duration: Duration) -> String {
22 let total_secs = duration.as_secs();
23 let mins = total_secs / 60;
24 let secs = total_secs % 60;
25 format!("{mins:02}:{secs:02}")
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn format_elapsed_zero() {
34 assert_eq!(format_elapsed(Duration::from_secs(0)), "00:00");
35 }
36
37 #[test]
38 fn format_elapsed_seconds_only() {
39 assert_eq!(format_elapsed(Duration::from_secs(45)), "00:45");
40 }
41
42 #[test]
43 fn format_elapsed_one_minute() {
44 assert_eq!(format_elapsed(Duration::from_secs(60)), "01:00");
45 }
46
47 #[test]
48 fn format_elapsed_mixed() {
49 assert_eq!(format_elapsed(Duration::from_secs(272)), "04:32");
50 }
51
52 #[test]
53 fn format_elapsed_large_value() {
54 assert_eq!(format_elapsed(Duration::from_secs(3661)), "61:01");
56 }
57
58 #[test]
59 fn format_elapsed_pads_single_digits() {
60 assert_eq!(format_elapsed(Duration::from_secs(5)), "00:05");
62 assert_eq!(format_elapsed(Duration::from_secs(65)), "01:05");
63 }
64
65 #[test]
66 fn format_elapsed_ignores_subsecond() {
67 assert_eq!(format_elapsed(Duration::from_millis(999)), "00:00");
69 assert_eq!(format_elapsed(Duration::from_millis(1500)), "00:01");
70 }
71}