diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2015-11-23 14:51:45 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2015-11-23 15:27:07 -0800 |
| commit | 27ee3fea7ae0eaa38abf01461ce9ebc69fe9c311 (patch) | |
| tree | 8d7ba2e339d798d3b6404502c4ee031f78edb0bd /src/libstd/time | |
| parent | e24fffef8a560ddf968a866db8da96bc461f4038 (diff) | |
| download | rust-27ee3fea7ae0eaa38abf01461ce9ebc69fe9c311.tar.gz rust-27ee3fea7ae0eaa38abf01461ce9ebc69fe9c311.zip | |
std: Tweak tests of std::time
Typical algebra currently doesn't work on the types in std::time currently (see [this comment][comment]), so tweak the tests to account for this property. [comment]: https://github.com/rust-lang/rust/issues/29866#issuecomment-159093809 Closes #29970
Diffstat (limited to 'src/libstd/time')
| -rw-r--r-- | src/libstd/time/mod.rs | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/src/libstd/time/mod.rs b/src/libstd/time/mod.rs index 95f68712be2..3e01ed894b8 100644 --- a/src/libstd/time/mod.rs +++ b/src/libstd/time/mod.rs @@ -231,6 +231,16 @@ impl fmt::Display for SystemTimeError { mod tests { use super::{Instant, SystemTime, Duration, 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, 1) <= b); + } + }) + } + #[test] fn instant_monotonic() { let a = Instant::now(); @@ -249,11 +259,11 @@ mod tests { let a = Instant::now(); let b = Instant::now(); let dur = b.duration_from_earlier(a); - assert_eq!(b - dur, a); - assert_eq!(a + dur, b); + assert_almost_eq!(b - dur, a); + assert_almost_eq!(a + dur, b); let second = Duration::new(1, 0); - assert_eq!(a - second + second, a); + assert_almost_eq!(a - second + second, a); } #[test] @@ -269,31 +279,31 @@ mod tests { let b = SystemTime::now(); match b.duration_from_earlier(a) { Ok(dur) if dur == Duration::new(0, 0) => { - assert_eq!(a, b); + assert_almost_eq!(a, b); } Ok(dur) => { assert!(b > a); - assert_eq!(b - dur, a); - assert_eq!(a + dur, b); + assert_almost_eq!(b - dur, a); + assert_almost_eq!(a + dur, b); } Err(dur) => { let dur = dur.duration(); assert!(a > b); - assert_eq!(b + dur, a); - assert_eq!(b - dur, a); + assert_almost_eq!(b + dur, a); + assert_almost_eq!(b - dur, a); } } let second = Duration::new(1, 0); - assert_eq!(a.duration_from_earlier(a - second).unwrap(), second); - assert_eq!(a.duration_from_earlier(a + second).unwrap_err().duration(), - second); + assert_almost_eq!(a.duration_from_earlier(a - second).unwrap(), second); + assert_almost_eq!(a.duration_from_earlier(a + second).unwrap_err() + .duration(), second); - assert_eq!(a - second + second, a); + assert_almost_eq!(a - second + second, a); let eighty_years = second * 60 * 60 * 24 * 365 * 80; - assert_eq!(a - eighty_years + eighty_years, a); - assert_eq!(a - (eighty_years * 10) + (eighty_years * 10), a); + assert_almost_eq!(a - eighty_years + eighty_years, a); + assert_almost_eq!(a - (eighty_years * 10) + (eighty_years * 10), a); } #[test] |
