@@ -295,6 +295,35 @@ describe('Duration', () => {
295
295
equal ( d2 . toString ( options ) , 'PT15H23M30.0000000S' ) ;
296
296
equal ( d3 . toString ( options ) , 'PT15H23M30.5432000S' ) ;
297
297
} ) ;
298
+ it ( 'pads correctly in edge cases' , ( ) => {
299
+ const d4 = Duration . from ( { years : 3 } ) ;
300
+ equal ( d4 . toString ( ) , 'P3Y' ) ;
301
+ equal ( d4 . toString ( { fractionalSecondDigits : 0 } ) , 'P3YT0S' ) ;
302
+ equal ( d4 . toString ( { smallestUnit : 'seconds' } ) , 'P3YT0S' ) ;
303
+ equal ( d4 . toString ( { smallestUnit : 'milliseconds' } ) , 'P3YT0.000S' ) ;
304
+ equal ( d4 . toString ( { fractionalSecondDigits : 5 } ) , 'P3YT0.00000S' ) ;
305
+
306
+ const d5 = Duration . from ( { minutes : 30 } ) ;
307
+ equal ( d5 . toString ( ) , 'PT30M' ) ;
308
+ equal ( d5 . toString ( { fractionalSecondDigits : 0 } ) , 'PT30M0S' ) ;
309
+ equal ( d5 . toString ( { smallestUnit : 'seconds' } ) , 'PT30M0S' ) ;
310
+ equal ( d5 . toString ( { smallestUnit : 'milliseconds' } ) , 'PT30M0.000S' ) ;
311
+ equal ( d5 . toString ( { fractionalSecondDigits : 5 } ) , 'PT30M0.00000S' ) ;
312
+
313
+ const d6 = Duration . from ( { milliseconds : 100 } ) ;
314
+ equal ( d6 . toString ( ) , 'PT0.1S' ) ;
315
+ equal ( d6 . toString ( { fractionalSecondDigits : 0 } ) , 'PT0S' ) ;
316
+ equal ( d6 . toString ( { smallestUnit : 'seconds' } ) , 'PT0S' ) ;
317
+ equal ( d6 . toString ( { smallestUnit : 'milliseconds' } ) , 'PT0.100S' ) ;
318
+ equal ( d6 . toString ( { fractionalSecondDigits : 5 } ) , 'PT0.10000S' ) ;
319
+
320
+ const zero = new Duration ( ) ;
321
+ equal ( zero . toString ( ) , 'PT0S' ) ;
322
+ equal ( zero . toString ( { fractionalSecondDigits : 0 } ) , 'PT0S' ) ;
323
+ equal ( zero . toString ( { smallestUnit : 'seconds' } ) , 'PT0S' ) ;
324
+ equal ( zero . toString ( { smallestUnit : 'milliseconds' } ) , 'PT0.000S' ) ;
325
+ equal ( zero . toString ( { fractionalSecondDigits : 5 } ) , 'PT0.00000S' ) ;
326
+ } ) ;
298
327
it ( 'auto is the default' , ( ) => {
299
328
[ d1 , d2 , d3 ] . forEach ( ( d ) => equal ( d . toString ( { fractionalSecondDigits : 'auto' } ) , d . toString ( ) ) ) ;
300
329
} ) ;
0 commit comments