@@ -45,6 +45,13 @@ fn from_weeks_overflow() {
4545 let _ = Duration :: from_weeks ( overflow) ;
4646}
4747
48+ #[ test]
49+ #[ should_panic]
50+ fn from_nanos_u128_overflow ( ) {
51+ let overflow = ( u64:: MAX * NANOS_PER_SEC ) + ( NANOS_PER_SEC - 1 ) + 1 ;
52+ let _ = Duration :: from_nanos_u128 ( overflow) ;
53+ }
54+
4855#[ test]
4956fn constructors ( ) {
5057 assert_eq ! ( Duration :: from_weeks( 1 ) , Duration :: from_secs( 7 * 24 * 60 * 60 ) ) ;
@@ -72,6 +79,8 @@ fn secs() {
7279 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . as_secs( ) , 1 ) ;
7380 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . as_secs( ) , 0 ) ;
7481 assert_eq ! ( Duration :: from_nanos( 1_000_000_001 ) . as_secs( ) , 1 ) ;
82+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . as_secs( ) , 0 ) ;
83+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_000_001 ) . as_secs( ) , 1 ) ;
7584}
7685
7786#[ test]
@@ -86,6 +95,8 @@ fn millis() {
8695 assert_eq ! ( Duration :: from_micros( 1_001_000 ) . subsec_millis( ) , 1 ) ;
8796 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_millis( ) , 999 ) ;
8897 assert_eq ! ( Duration :: from_nanos( 1_001_000_000 ) . subsec_millis( ) , 1 ) ;
98+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_millis( ) , 999 ) ;
99+ assert_eq ! ( Duration :: from_nanos_u128( 1_001_000_001 ) . subsec_millis( ) , 1 ) ;
89100}
90101
91102#[ test]
@@ -100,6 +111,9 @@ fn micros() {
100111 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_micros( ) , 1 ) ;
101112 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
102113 assert_eq ! ( Duration :: from_nanos( 1_000_001_000 ) . subsec_micros( ) , 1 ) ;
114+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
115+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_001_000 ) . subsec_micros( ) , 1 ) ;
116+
103117}
104118
105119#[ test]
@@ -114,6 +128,8 @@ fn nanos() {
114128 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_nanos( ) , 1000 ) ;
115129 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
116130 assert_eq ! ( Duration :: from_nanos( 1_000_000_001 ) . subsec_nanos( ) , 1 ) ;
131+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
132+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_000_001 ) . subsec_nanos( ) , 1 ) ;
117133}
118134
119135#[ test]
0 commit comments