std: move "mod tests/benches" to separate files
Also doing fmt inplace as requested.
This commit is contained in:
parent
db6cbfc49c
commit
a4e926daee
120 changed files with 16569 additions and 16699 deletions
|
@ -12,6 +12,9 @@
|
|||
|
||||
#![stable(feature = "time", since = "1.3.0")]
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
use crate::cmp;
|
||||
use crate::error::Error;
|
||||
use crate::fmt;
|
||||
|
@ -630,172 +633,3 @@ impl FromInner<time::SystemTime> for SystemTime {
|
|||
SystemTime(time)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::{Duration, Instant, SystemTime, UNIX_EPOCH};
|
||||
|
||||
macro_rules! assert_almost_eq {
|
||||
($a:expr, $b:expr) => {{
|
||||
let (a, b) = ($a, $b);
|
||||
if a != b {
|
||||
let (a, b) = if a > b { (a, b) } else { (b, a) };
|
||||
assert!(a - Duration::new(0, 1000) <= b, "{:?} is not almost equal to {:?}", a, b);
|
||||
}
|
||||
}};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_monotonic() {
|
||||
let a = Instant::now();
|
||||
let b = Instant::now();
|
||||
assert!(b >= a);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_elapsed() {
|
||||
let a = Instant::now();
|
||||
a.elapsed();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_math() {
|
||||
let a = Instant::now();
|
||||
let b = Instant::now();
|
||||
println!("a: {:?}", a);
|
||||
println!("b: {:?}", b);
|
||||
let dur = b.duration_since(a);
|
||||
println!("dur: {:?}", dur);
|
||||
assert_almost_eq!(b - dur, a);
|
||||
assert_almost_eq!(a + dur, b);
|
||||
|
||||
let second = Duration::new(1, 0);
|
||||
assert_almost_eq!(a - second + second, a);
|
||||
assert_almost_eq!(a.checked_sub(second).unwrap().checked_add(second).unwrap(), a);
|
||||
|
||||
// checked_add_duration will not panic on overflow
|
||||
let mut maybe_t = Some(Instant::now());
|
||||
let max_duration = Duration::from_secs(u64::MAX);
|
||||
// in case `Instant` can store `>= now + max_duration`.
|
||||
for _ in 0..2 {
|
||||
maybe_t = maybe_t.and_then(|t| t.checked_add(max_duration));
|
||||
}
|
||||
assert_eq!(maybe_t, None);
|
||||
|
||||
// checked_add_duration calculates the right time and will work for another year
|
||||
let year = Duration::from_secs(60 * 60 * 24 * 365);
|
||||
assert_eq!(a + year, a.checked_add(year).unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_math_is_associative() {
|
||||
let now = Instant::now();
|
||||
let offset = Duration::from_millis(5);
|
||||
// Changing the order of instant math shouldn't change the results,
|
||||
// especially when the expression reduces to X + identity.
|
||||
assert_eq!((now + offset) - now, (now - now) + offset);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn instant_duration_since_panic() {
|
||||
let a = Instant::now();
|
||||
(a - Duration::new(1, 0)).duration_since(a);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_checked_duration_since_nopanic() {
|
||||
let now = Instant::now();
|
||||
let earlier = now - Duration::new(1, 0);
|
||||
let later = now + Duration::new(1, 0);
|
||||
assert_eq!(earlier.checked_duration_since(now), None);
|
||||
assert_eq!(later.checked_duration_since(now), Some(Duration::new(1, 0)));
|
||||
assert_eq!(now.checked_duration_since(now), Some(Duration::new(0, 0)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn instant_saturating_duration_since_nopanic() {
|
||||
let a = Instant::now();
|
||||
let ret = (a - Duration::new(1, 0)).saturating_duration_since(a);
|
||||
assert_eq!(ret, Duration::new(0, 0));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn system_time_math() {
|
||||
let a = SystemTime::now();
|
||||
let b = SystemTime::now();
|
||||
match b.duration_since(a) {
|
||||
Ok(dur) if dur == Duration::new(0, 0) => {
|
||||
assert_almost_eq!(a, b);
|
||||
}
|
||||
Ok(dur) => {
|
||||
assert!(b > a);
|
||||
assert_almost_eq!(b - dur, a);
|
||||
assert_almost_eq!(a + dur, b);
|
||||
}
|
||||
Err(dur) => {
|
||||
let dur = dur.duration();
|
||||
assert!(a > b);
|
||||
assert_almost_eq!(b + dur, a);
|
||||
assert_almost_eq!(a - dur, b);
|
||||
}
|
||||
}
|
||||
|
||||
let second = Duration::new(1, 0);
|
||||
assert_almost_eq!(a.duration_since(a - second).unwrap(), second);
|
||||
assert_almost_eq!(a.duration_since(a + second).unwrap_err().duration(), second);
|
||||
|
||||
assert_almost_eq!(a - second + second, a);
|
||||
assert_almost_eq!(a.checked_sub(second).unwrap().checked_add(second).unwrap(), a);
|
||||
|
||||
let one_second_from_epoch = UNIX_EPOCH + Duration::new(1, 0);
|
||||
let one_second_from_epoch2 =
|
||||
UNIX_EPOCH + Duration::new(0, 500_000_000) + Duration::new(0, 500_000_000);
|
||||
assert_eq!(one_second_from_epoch, one_second_from_epoch2);
|
||||
|
||||
// checked_add_duration will not panic on overflow
|
||||
let mut maybe_t = Some(SystemTime::UNIX_EPOCH);
|
||||
let max_duration = Duration::from_secs(u64::MAX);
|
||||
// in case `SystemTime` can store `>= UNIX_EPOCH + max_duration`.
|
||||
for _ in 0..2 {
|
||||
maybe_t = maybe_t.and_then(|t| t.checked_add(max_duration));
|
||||
}
|
||||
assert_eq!(maybe_t, None);
|
||||
|
||||
// checked_add_duration calculates the right time and will work for another year
|
||||
let year = Duration::from_secs(60 * 60 * 24 * 365);
|
||||
assert_eq!(a + year, a.checked_add(year).unwrap());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn system_time_elapsed() {
|
||||
let a = SystemTime::now();
|
||||
drop(a.elapsed());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn since_epoch() {
|
||||
let ts = SystemTime::now();
|
||||
let a = ts.duration_since(UNIX_EPOCH + Duration::new(1, 0)).unwrap();
|
||||
let b = ts.duration_since(UNIX_EPOCH).unwrap();
|
||||
assert!(b > a);
|
||||
assert_eq!(b - a, Duration::new(1, 0));
|
||||
|
||||
let thirty_years = Duration::new(1, 0) * 60 * 60 * 24 * 365 * 30;
|
||||
|
||||
// Right now for CI this test is run in an emulator, and apparently the
|
||||
// aarch64 emulator's sense of time is that we're still living in the
|
||||
// 70s. This is also true for riscv (also qemu)
|
||||
//
|
||||
// Otherwise let's assume that we're all running computers later than
|
||||
// 2000.
|
||||
if !cfg!(target_arch = "aarch64") && !cfg!(target_arch = "riscv64") {
|
||||
assert!(a > thirty_years);
|
||||
}
|
||||
|
||||
// let's assume that we're all running computers earlier than 2090.
|
||||
// Should give us ~70 years to fix this!
|
||||
let hundred_twenty_years = thirty_years * 4;
|
||||
assert!(a < hundred_twenty_years);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue