@@ -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 constructor_weeks ( ) {
5057 assert_eq ! ( Duration :: from_weeks( 1 ) , Duration :: from_secs( 7 * 24 * 60 * 60 ) ) ;
@@ -81,6 +88,8 @@ fn secs() {
8188 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . as_secs( ) , 1 ) ;
8289 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . as_secs( ) , 0 ) ;
8390 assert_eq ! ( Duration :: from_nanos( 1_000_000_001 ) . as_secs( ) , 1 ) ;
91+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . as_secs( ) , 0 ) ;
92+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_000_001 ) . as_secs( ) , 1 ) ;
8493}
8594
8695#[ test]
@@ -95,6 +104,8 @@ fn millis() {
95104 assert_eq ! ( Duration :: from_micros( 1_001_000 ) . subsec_millis( ) , 1 ) ;
96105 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_millis( ) , 999 ) ;
97106 assert_eq ! ( Duration :: from_nanos( 1_001_000_000 ) . subsec_millis( ) , 1 ) ;
107+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_millis( ) , 999 ) ;
108+ assert_eq ! ( Duration :: from_nanos_u128( 1_001_000_001 ) . subsec_millis( ) , 1 ) ;
98109}
99110
100111#[ test]
@@ -109,6 +120,8 @@ fn micros() {
109120 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_micros( ) , 1 ) ;
110121 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
111122 assert_eq ! ( Duration :: from_nanos( 1_000_001_000 ) . subsec_micros( ) , 1 ) ;
123+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
124+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_001_000 ) . subsec_micros( ) , 1 ) ;
112125}
113126
114127#[ test]
@@ -123,6 +136,8 @@ fn nanos() {
123136 assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_nanos( ) , 1000 ) ;
124137 assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
125138 assert_eq ! ( Duration :: from_nanos( 1_000_000_001 ) . subsec_nanos( ) , 1 ) ;
139+ assert_eq ! ( Duration :: from_nanos_u128( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
140+ assert_eq ! ( Duration :: from_nanos_u128( 1_000_000_001 ) . subsec_nanos( ) , 1 ) ;
126141}
127142
128143#[ test]
0 commit comments