Duration to String enhanced with tests

Adds checks for if a bit in a u8 is set or clear
This commit is contained in:
2025-07-23 11:19:22 -04:00
parent 3280123d22
commit 6d51a4d3a6
7 changed files with 133 additions and 42 deletions
+43
View File
@@ -0,0 +1,43 @@
use std::time::Duration;
use crate::duration_to_string::duration_to_string::duration_to_string;
#[cfg(test)]
mod test {
use super::*;
use crate::duration_to_string::duration_to_string::*;
#[test]
fn multi_duration_to_string() {
let params: Vec<(&str, Duration, Option<bool>)> = vec![
("1 second", Duration::from_secs(1), Some(false)),
("4 seconds", Duration::from_secs(4), Some(false)),
("1 minute", Duration::from_secs(SECONDS_IN_MINUTE as u64), Some(false)),
("4 minutes", Duration::from_secs((SECONDS_IN_MINUTE * 4) as u64), Some(false)),
("1 hour", Duration::from_secs(SECONDS_IN_HOUR as u64), Some(false)),
("4 hours", Duration::from_secs((SECONDS_IN_HOUR * 4) as u64), Some(false)),
("4 hours 5 minutes", Duration::from_secs((SECONDS_IN_HOUR * 4 + SECONDS_IN_MINUTE * 5) as u64), Some(false)),
("1 day", Duration::from_secs(SECONDS_IN_DAY as u64), Some(false)),
("0 days 0 hours 0 minutes 1 second", Duration::from_secs(1), Some(true)),
("0 days 0 hours 0 minutes 4 seconds", Duration::from_secs(4), Some(true)),
("0 days 0 hours 1 minute 0 seconds", Duration::from_secs(SECONDS_IN_MINUTE as u64), Some(true)),
("0 days 0 hours 4 minutes 0 seconds", Duration::from_secs((SECONDS_IN_MINUTE * 4) as u64), Some(true)),
("0 days 1 hour 0 minutes 0 seconds", Duration::from_secs(SECONDS_IN_HOUR as u64), Some(true)),
("0 days 4 hours 0 minutes 0 seconds", Duration::from_secs((SECONDS_IN_HOUR * 4) as u64), Some(true)),
("0 days 4 hours 5 minutes 0 seconds", Duration::from_secs((SECONDS_IN_HOUR * 4 + SECONDS_IN_MINUTE * 5) as u64), Some(true)),
("1 day 0 hours 0 minutes 0 seconds", Duration::from_secs(SECONDS_IN_DAY as u64), Some(true)),
("1 day 0 hours 0 minutes 1 second", Duration::from_secs((SECONDS_IN_DAY + 1) as u64), Some(true)),
("1 second", Duration::from_secs(1), None),
("4 seconds", Duration::from_secs(4), None),
("1 minute", Duration::from_secs(SECONDS_IN_MINUTE as u64), None),
("4 minutes", Duration::from_secs((SECONDS_IN_MINUTE * 4) as u64), None),
("1 hour", Duration::from_secs(SECONDS_IN_HOUR as u64), None),
("4 hours", Duration::from_secs((SECONDS_IN_HOUR * 4) as u64), None),
("4 hours 5 minutes", Duration::from_secs((SECONDS_IN_HOUR * 4 + SECONDS_IN_MINUTE * 5) as u64), None),
("1 day", Duration::from_secs(SECONDS_IN_DAY as u64), None),
];
for (expected, actual, show) in params {
assert_eq!(expected, duration_to_string(actual, show));
}
}
}