blob: dd53c17249188946ddc7b4b888ea245eb750907d [file] [log] [blame]
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;
}
}
}