| use std::time::Duration; |
| |
| /// A sequence of strongly monotonic inrceasing durations. Introduced for testing conversions from |
| /// `Duration` to platform-specific types. |
| pub(crate) const MONOTONIC_DURATIONS: [Duration; 17] = [ |
| Duration::ZERO, |
| Duration::from_nanos(1), |
| Duration::from_millis(1), |
| Duration::from_secs(1), |
| Duration::from_secs(i16::MAX as u64 - 1), |
| Duration::from_secs(i16::MAX as u64), |
| Duration::from_secs(i16::MAX as u64 + 1), |
| Duration::from_secs(i32::MAX as u64 - 1), |
| Duration::from_secs(i32::MAX as u64), |
| Duration::from_secs(i32::MAX as u64 + 1), |
| Duration::from_secs(i64::MAX as u64 - 1), |
| Duration::from_secs(i64::MAX as u64), |
| Duration::from_secs(i64::MAX as u64 + 1), |
| Duration::from_secs(u64::MAX - 1), |
| Duration::from_secs(u64::MAX), |
| Duration::new(u64::MAX, 1_000_000), |
| Duration::MAX, |
| ]; |
| |
| #[cfg(test)] |
| mod tests { |
| use super::*; |
| |
| #[test] |
| fn basic_durations_properties() { |
| assert_eq!(Duration::ZERO, *MONOTONIC_DURATIONS.first().unwrap()); |
| assert_eq!(Duration::MAX, *MONOTONIC_DURATIONS.last().unwrap()); |
| |
| // Check that this array is monotonic. |
| let mut last = MONOTONIC_DURATIONS[0]; |
| for next in MONOTONIC_DURATIONS { |
| assert!(last <= next); |
| last = next; |
| } |
| } |
| } |