@@ -45,6 +45,13 @@ fn from_weeks_overflow() {
45
45
let _ = Duration :: from_weeks ( overflow) ;
46
46
}
47
47
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
+
48
55
#[ test]
49
56
fn constructor_weeks ( ) {
50
57
assert_eq ! ( Duration :: from_weeks( 1 ) , Duration :: from_secs( 7 * 24 * 60 * 60 ) ) ;
@@ -81,6 +88,8 @@ fn secs() {
81
88
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . as_secs( ) , 1 ) ;
82
89
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . as_secs( ) , 0 ) ;
83
90
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 ) ;
84
93
}
85
94
86
95
#[ test]
@@ -95,6 +104,8 @@ fn millis() {
95
104
assert_eq ! ( Duration :: from_micros( 1_001_000 ) . subsec_millis( ) , 1 ) ;
96
105
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_millis( ) , 999 ) ;
97
106
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 ) ;
98
109
}
99
110
100
111
#[ test]
@@ -109,6 +120,8 @@ fn micros() {
109
120
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_micros( ) , 1 ) ;
110
121
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
111
122
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 ) ;
112
125
}
113
126
114
127
#[ test]
@@ -123,6 +136,8 @@ fn nanos() {
123
136
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_nanos( ) , 1000 ) ;
124
137
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
125
138
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 ) ;
126
141
}
127
142
128
143
#[ test]
0 commit comments