@@ -435,4 +435,86 @@ mod tests {
435
435
assert_eq ! ( result. hours( ) , -1.0 ) ;
436
436
assert_eq ! ( result. minutes( ) , -37.0 ) ;
437
437
}
438
+
439
+ #[ test]
440
+ // test262/test/built-ins/Temporal/PlainTime/prototype/round/roundingincrement-nanoseconds.js
441
+ fn rounding_increment_nanos ( ) {
442
+ let time = Time :: new ( 3 , 34 , 56 , 987 , 654 , 321 , ArithmeticOverflow :: Constrain ) . unwrap ( ) ;
443
+
444
+ assert_eq ! (
445
+ time. round( TemporalUnit :: Nanosecond , Some ( 1.0 ) , None )
446
+ . unwrap( ) ,
447
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 321 , ArithmeticOverflow :: Constrain ) . unwrap( )
448
+ ) ;
449
+ assert_eq ! (
450
+ time. round( TemporalUnit :: Nanosecond , Some ( 2.0 ) , None )
451
+ . unwrap( ) ,
452
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 322 , ArithmeticOverflow :: Constrain ) . unwrap( )
453
+ ) ;
454
+ assert_eq ! (
455
+ time. round( TemporalUnit :: Nanosecond , Some ( 4.0 ) , None )
456
+ . unwrap( ) ,
457
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
458
+ ) ;
459
+ assert_eq ! (
460
+ time. round( TemporalUnit :: Nanosecond , Some ( 5.0 ) , None )
461
+ . unwrap( ) ,
462
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
463
+ ) ;
464
+ assert_eq ! (
465
+ time. round( TemporalUnit :: Nanosecond , Some ( 8.0 ) , None )
466
+ . unwrap( ) ,
467
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
468
+ ) ;
469
+ assert_eq ! (
470
+ time. round( TemporalUnit :: Nanosecond , Some ( 10.0 ) , None )
471
+ . unwrap( ) ,
472
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
473
+ ) ;
474
+ assert_eq ! (
475
+ time. round( TemporalUnit :: Nanosecond , Some ( 20.0 ) , None )
476
+ . unwrap( ) ,
477
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
478
+ ) ;
479
+ assert_eq ! (
480
+ time. round( TemporalUnit :: Nanosecond , Some ( 25.0 ) , None )
481
+ . unwrap( ) ,
482
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 325 , ArithmeticOverflow :: Constrain ) . unwrap( )
483
+ ) ;
484
+ assert_eq ! (
485
+ time. round( TemporalUnit :: Nanosecond , Some ( 40.0 ) , None )
486
+ . unwrap( ) ,
487
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 320 , ArithmeticOverflow :: Constrain ) . unwrap( )
488
+ ) ;
489
+ assert_eq ! (
490
+ time. round( TemporalUnit :: Nanosecond , Some ( 50.0 ) , None )
491
+ . unwrap( ) ,
492
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 300 , ArithmeticOverflow :: Constrain ) . unwrap( )
493
+ ) ;
494
+ assert_eq ! (
495
+ time. round( TemporalUnit :: Nanosecond , Some ( 100.0 ) , None )
496
+ . unwrap( ) ,
497
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 300 , ArithmeticOverflow :: Constrain ) . unwrap( )
498
+ ) ;
499
+ assert_eq ! (
500
+ time. round( TemporalUnit :: Nanosecond , Some ( 125.0 ) , None )
501
+ . unwrap( ) ,
502
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 375 , ArithmeticOverflow :: Constrain ) . unwrap( )
503
+ ) ;
504
+ assert_eq ! (
505
+ time. round( TemporalUnit :: Nanosecond , Some ( 200.0 ) , None )
506
+ . unwrap( ) ,
507
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 400 , ArithmeticOverflow :: Constrain ) . unwrap( )
508
+ ) ;
509
+ assert_eq ! (
510
+ time. round( TemporalUnit :: Nanosecond , Some ( 250.0 ) , None )
511
+ . unwrap( ) ,
512
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 250 , ArithmeticOverflow :: Constrain ) . unwrap( )
513
+ ) ;
514
+ assert_eq ! (
515
+ time. round( TemporalUnit :: Nanosecond , Some ( 500.0 ) , None )
516
+ . unwrap( ) ,
517
+ Time :: new( 3 , 34 , 56 , 987 , 654 , 500 , ArithmeticOverflow :: Constrain ) . unwrap( )
518
+ ) ;
519
+ }
438
520
}
0 commit comments