@@ -90,10 +90,9 @@ fn instant_math_is_associative() {
}
#[ test]
#[ should_panic]
fn instant_duration_since_panic ( ) {
fn instant_duration_since_saturates ( ) {
let a = Instant :: now ( ) ;
let _ = ( a - Duration :: SECOND ) . duration_since ( a) ;
assert_eq ! ( ( a - Duration ::SECOND ) .duration_since( a) , Duration :: ZERO ) ;
}
#[ test]
@@ -109,6 +108,7 @@ fn instant_checked_duration_since_nopanic() {
#[ test]
fn instant_saturating_duration_since_nopanic ( ) {
let a = Instant :: now ( ) ;
#[ allow( deprecated, deprecated_in_future) ]
let ret = ( a - Duration :: SECOND ) . saturating_duration_since ( a) ;
assert_eq ! ( ret, Duration ::ZERO ) ;
}
@@ -192,31 +192,6 @@ fn since_epoch() {
assert ! ( a < hundred_twenty_years) ;
}
#[ cfg( all( target_has_atomic = "64" , not( target_has_atomic = "128" ) ) ) ]
#[ test]
fn monotonizer_wrapping_backslide ( ) {
use super :: monotonic:: inner:: { monotonize_impl, ZERO } ;
use core:: sync:: atomic:: AtomicU64 ;
let reference = AtomicU64 :: new ( 0 ) ;
let time = match ZERO . checked_add_duration ( & Duration :: from_secs ( 0xffff_ffff ) ) {
Some ( time) => time,
None => {
// platform cannot represent u32::MAX seconds so it won't have to deal with this kind
// of overflow either
return ;
}
} ;
let monotonized = monotonize_impl ( & reference, time) ;
let expected = ZERO . checked_add_duration ( & Duration :: from_secs ( 1 << 32 ) ) . unwrap ( ) ;
assert_eq ! (
monotonized, expected,
"64bit monotonizer should handle overflows in the seconds part"
) ;
}
macro_rules! bench_instant_threaded {
( $bench_name: ident, $thread_count: expr) => {
#[ bench]