@@ -162,6 +162,48 @@ describe("Duration", () => {
162
162
} ) )
163
163
} )
164
164
165
+ it ( "divide" , ( ) => {
166
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , 2 ) ) . toEqual ( Option . some ( Duration . seconds ( 30 ) ) )
167
+ expect ( Duration . divide ( Duration . seconds ( 1 ) , 3 ) ) . toEqual ( Option . some ( Duration . nanos ( 333333333n ) ) )
168
+ expect ( Duration . divide ( Duration . nanos ( 2n ) , 2 ) ) . toEqual ( Option . some ( Duration . nanos ( 1n ) ) )
169
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , 3 ) ) . toEqual ( Option . some ( Duration . zero ) )
170
+ expect ( Duration . divide ( Duration . infinity , 2 ) ) . toEqual ( Option . some ( Duration . infinity ) )
171
+ expect ( Duration . divide ( Duration . zero , 2 ) ) . toEqual ( Option . some ( Duration . zero ) )
172
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , 0 ) ) . toEqual ( Option . none ( ) )
173
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , - 0 ) ) . toEqual ( Option . none ( ) )
174
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , 0 ) ) . toEqual ( Option . none ( ) )
175
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , - 0 ) ) . toEqual ( Option . none ( ) )
176
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , 0.5 ) ) . toEqual ( Option . some ( Duration . minutes ( 2 ) ) )
177
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , 1.5 ) ) . toEqual ( Option . some ( Duration . seconds ( 40 ) ) )
178
+ expect ( Duration . divide ( Duration . minutes ( 1 ) , NaN ) ) . toEqual ( Option . none ( ) )
179
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , 0.5 ) ) . toEqual ( Option . none ( ) )
180
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , 1.5 ) ) . toEqual ( Option . none ( ) )
181
+ expect ( Duration . divide ( Duration . nanos ( 1n ) , NaN ) ) . toEqual ( Option . none ( ) )
182
+
183
+ expect ( Duration . divide ( "1 minute" , 2 ) ) . toEqual ( Option . some ( Duration . seconds ( 30 ) ) )
184
+ } )
185
+
186
+ it ( "unsafeDivide" , ( ) => {
187
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , 2 ) ) . toEqual ( Duration . seconds ( 30 ) )
188
+ expect ( Duration . unsafeDivide ( Duration . seconds ( 1 ) , 3 ) ) . toEqual ( Duration . nanos ( 333333333n ) )
189
+ expect ( Duration . unsafeDivide ( Duration . nanos ( 2n ) , 2 ) ) . toEqual ( Duration . nanos ( 1n ) )
190
+ expect ( Duration . unsafeDivide ( Duration . nanos ( 1n ) , 3 ) ) . toEqual ( Duration . zero )
191
+ expect ( Duration . unsafeDivide ( Duration . infinity , 2 ) ) . toEqual ( Duration . infinity )
192
+ expect ( Duration . unsafeDivide ( Duration . zero , 2 ) ) . toEqual ( Duration . zero )
193
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , 0 ) ) . toEqual ( Duration . infinity )
194
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , - 0 ) ) . toEqual ( Duration . zero )
195
+ expect ( Duration . unsafeDivide ( Duration . nanos ( 1n ) , 0 ) ) . toEqual ( Duration . infinity )
196
+ expect ( Duration . unsafeDivide ( Duration . nanos ( 1n ) , - 0 ) ) . toEqual ( Duration . zero )
197
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , 0.5 ) ) . toEqual ( Duration . minutes ( 2 ) )
198
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , 1.5 ) ) . toEqual ( Duration . seconds ( 40 ) )
199
+ expect ( Duration . unsafeDivide ( Duration . minutes ( 1 ) , NaN ) ) . toEqual ( Duration . zero )
200
+ expect ( ( ) => Duration . unsafeDivide ( Duration . nanos ( 1n ) , 0.5 ) ) . toThrow ( )
201
+ expect ( ( ) => Duration . unsafeDivide ( Duration . nanos ( 1n ) , 1.5 ) ) . toThrow ( )
202
+ expect ( Duration . unsafeDivide ( Duration . nanos ( 1n ) , NaN ) ) . toEqual ( Duration . zero )
203
+
204
+ expect ( Duration . unsafeDivide ( "1 minute" , 2 ) ) . toEqual ( Duration . seconds ( 30 ) )
205
+ } )
206
+
165
207
it ( "times" , ( ) => {
166
208
expect ( Duration . times ( Duration . seconds ( 1 ) , 60 ) ) . toEqual ( Duration . minutes ( 1 ) )
167
209
expect ( Duration . times ( Duration . nanos ( 2n ) , 10 ) ) . toEqual ( Duration . nanos ( 20n ) )
0 commit comments