@@ -295,6 +295,35 @@ describe('Duration', () => {
295295 equal ( d2 . toString ( options ) , 'PT15H23M30.0000000S' ) ;
296296 equal ( d3 . toString ( options ) , 'PT15H23M30.5432000S' ) ;
297297 } ) ;
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+ } ) ;
298327 it ( 'auto is the default' , ( ) => {
299328 [ d1 , d2 , d3 ] . forEach ( ( d ) => equal ( d . toString ( { fractionalSecondDigits : 'auto' } ) , d . toString ( ) ) ) ;
300329 } ) ;
0 commit comments