From 41d90709f25b813c33943102b0d28329de1aaf73 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 1 Apr 2020 20:12:51 +0200 Subject: [PATCH] sanity check time values a bit more --- tests/run-pass/time.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/run-pass/time.rs b/tests/run-pass/time.rs index fc2059fa256..a9ca28161ca 100644 --- a/tests/run-pass/time.rs +++ b/tests/run-pass/time.rs @@ -3,16 +3,22 @@ use std::time::{SystemTime, Instant}; fn main() { + // Check `SystemTime`. let now1 = SystemTime::now(); // Do some work to make time pass. for _ in 0..10 { drop(vec![42]); } let now2 = SystemTime::now(); assert!(now2 > now1); let diff = now2.duration_since(now1).unwrap(); - assert!(diff.as_micros() > 0); assert_eq!(now1 + diff, now2); assert_eq!(now2 - diff, now1); + // Sanity-check the time we got. + let seconds_since_epoch = now1.duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs(); + let years_since_epoch = seconds_since_epoch / 3600 / 24 / 365; + let year = 1970 + years_since_epoch; + assert!(2020 <= year && year < 2100); + // Check `Instant`. #[cfg(not(windows))] // `Instant` shims not yet implemented on Windows { let now1 = Instant::now(); @@ -24,9 +30,11 @@ fn main() { #[cfg(target_os = "linux")] // TODO: macOS does not support Instant subtraction { let diff = now2.duration_since(now1); - assert!(diff.as_micros() > 0); assert_eq!(now1 + diff, now2); assert_eq!(now2 - diff, now1); + // Sanity-check the difference we got. + assert!(diff.as_micros() > 1); + assert!(diff.as_micros() < 1_000_000); } } }