• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use std::time::Duration;
2 
3 /// A sequence of strongly monotonic inrceasing durations. Introduced for testing conversions from
4 /// `Duration` to platform-specific types.
5 pub(crate) const MONOTONIC_DURATIONS: [Duration; 17] = [
6     Duration::ZERO,
7     Duration::from_nanos(1),
8     Duration::from_millis(1),
9     Duration::from_secs(1),
10     Duration::from_secs(i16::MAX as u64 - 1),
11     Duration::from_secs(i16::MAX as u64),
12     Duration::from_secs(i16::MAX as u64 + 1),
13     Duration::from_secs(i32::MAX as u64 - 1),
14     Duration::from_secs(i32::MAX as u64),
15     Duration::from_secs(i32::MAX as u64 + 1),
16     Duration::from_secs(i64::MAX as u64 - 1),
17     Duration::from_secs(i64::MAX as u64),
18     Duration::from_secs(i64::MAX as u64 + 1),
19     Duration::from_secs(u64::MAX - 1),
20     Duration::from_secs(u64::MAX),
21     Duration::new(u64::MAX, 1_000_000),
22     Duration::MAX,
23 ];
24 
25 #[cfg(test)]
26 mod tests {
27     use super::*;
28 
29     #[test]
basic_durations_properties()30     fn basic_durations_properties() {
31         assert_eq!(Duration::ZERO, *MONOTONIC_DURATIONS.first().unwrap());
32         assert_eq!(Duration::MAX, *MONOTONIC_DURATIONS.last().unwrap());
33 
34         // Check that this array is monotonic.
35         let mut last = MONOTONIC_DURATIONS[0];
36         for next in MONOTONIC_DURATIONS {
37             assert!(last <= next);
38             last = next;
39         }
40     }
41 }
42