@@ -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 constructors ( ) {
50
57
assert_eq ! ( Duration :: from_weeks( 1 ) , Duration :: from_secs( 7 * 24 * 60 * 60 ) ) ;
@@ -72,6 +79,8 @@ fn secs() {
72
79
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . as_secs( ) , 1 ) ;
73
80
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . as_secs( ) , 0 ) ;
74
81
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 ) ;
75
84
}
76
85
77
86
#[ test]
@@ -86,6 +95,8 @@ fn millis() {
86
95
assert_eq ! ( Duration :: from_micros( 1_001_000 ) . subsec_millis( ) , 1 ) ;
87
96
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_millis( ) , 999 ) ;
88
97
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 ) ;
89
100
}
90
101
91
102
#[ test]
@@ -100,6 +111,9 @@ fn micros() {
100
111
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_micros( ) , 1 ) ;
101
112
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_micros( ) , 999_999 ) ;
102
113
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
+
103
117
}
104
118
105
119
#[ test]
@@ -114,6 +128,8 @@ fn nanos() {
114
128
assert_eq ! ( Duration :: from_micros( 1_000_001 ) . subsec_nanos( ) , 1000 ) ;
115
129
assert_eq ! ( Duration :: from_nanos( 999_999_999 ) . subsec_nanos( ) , 999_999_999 ) ;
116
130
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 ) ;
117
133
}
118
134
119
135
#[ test]
0 commit comments