kinetic_common/
duration.rs1use std::time::Duration;
4
5pub fn parse_duration(s: &str) -> Result<Duration, humantime::DurationError> {
14 humantime::parse_duration(s.trim())
15}
16
17#[cfg(test)]
18mod tests {
19 use super::*;
20
21 #[test]
22 fn seconds() {
23 assert_eq!(parse_duration("5s").unwrap(), Duration::from_secs(5));
24 assert_eq!(parse_duration("60s").unwrap(), Duration::from_secs(60));
25 }
26
27 #[test]
28 fn minutes() {
29 assert_eq!(parse_duration("1m").unwrap(), Duration::from_secs(60));
30 assert_eq!(parse_duration("5m").unwrap(), Duration::from_secs(300));
31 }
32
33 #[test]
34 fn hours() {
35 assert_eq!(parse_duration("1h").unwrap(), Duration::from_secs(3600));
36 }
37
38 #[test]
39 fn milliseconds() {
40 assert_eq!(parse_duration("100ms").unwrap(), Duration::from_millis(100));
41 }
42
43 #[test]
44 fn whitespace_is_trimmed() {
45 assert_eq!(parse_duration(" 5s ").unwrap(), Duration::from_secs(5));
46 }
47
48 #[test]
49 fn empty_string_is_error() {
50 assert!(parse_duration("").is_err());
51 }
52
53 #[test]
54 fn invalid_string_is_error() {
55 assert!(parse_duration("not_a_duration").is_err());
56 }
57}