@@ -516,5 +516,30 @@ macro_rules! uint_module {
516
516
assert_eq_const_safe!( $T: <$T>:: unbounded_shr( 17 , SHIFT_AMOUNT_OVERFLOW3 ) , 0 ) ;
517
517
}
518
518
}
519
+
520
+ const EXACT_DIV_SUCCESS_DIVIDEND1 : $T = 42 ;
521
+ const EXACT_DIV_SUCCESS_DIVISOR1 : $T = 6 ;
522
+ const EXACT_DIV_SUCCESS_QUOTIENT1 : $T = 7 ;
523
+ const EXACT_DIV_SUCCESS_DIVIDEND2 : $T = 18 ;
524
+ const EXACT_DIV_SUCCESS_DIVISOR2 : $T = 3 ;
525
+ const EXACT_DIV_SUCCESS_QUOTIENT2 : $T = 6 ;
526
+
527
+ test_runtime_and_compiletime! {
528
+ fn test_exact_div( ) {
529
+ // 42 / 6
530
+ assert_eq_const_safe!( Option <$T>: <$T>:: checked_exact_div( EXACT_DIV_SUCCESS_DIVIDEND1 , EXACT_DIV_SUCCESS_DIVISOR1 ) , Some ( EXACT_DIV_SUCCESS_QUOTIENT1 ) ) ;
531
+ assert_eq_const_safe!( $T: <$T>:: exact_div( EXACT_DIV_SUCCESS_DIVIDEND1 , EXACT_DIV_SUCCESS_DIVISOR1 ) , EXACT_DIV_SUCCESS_QUOTIENT1 ) ;
532
+ assert_eq_const_safe!( $T: unsafe { <$T>:: unchecked_exact_div( EXACT_DIV_SUCCESS_DIVIDEND1 , EXACT_DIV_SUCCESS_DIVISOR1 ) } , EXACT_DIV_SUCCESS_QUOTIENT1 ) ;
533
+
534
+ // 18 / 3
535
+ assert_eq_const_safe!( Option <$T>: <$T>:: checked_exact_div( EXACT_DIV_SUCCESS_DIVIDEND2 , EXACT_DIV_SUCCESS_DIVISOR2 ) , Some ( EXACT_DIV_SUCCESS_QUOTIENT2 ) ) ;
536
+ assert_eq_const_safe!( $T: <$T>:: exact_div( EXACT_DIV_SUCCESS_DIVIDEND2 , EXACT_DIV_SUCCESS_DIVISOR2 ) , EXACT_DIV_SUCCESS_QUOTIENT2 ) ;
537
+ assert_eq_const_safe!( $T: unsafe { <$T>:: unchecked_exact_div( EXACT_DIV_SUCCESS_DIVIDEND2 , EXACT_DIV_SUCCESS_DIVISOR2 ) } , EXACT_DIV_SUCCESS_QUOTIENT2 ) ;
538
+
539
+ // failures
540
+ assert_eq_const_safe!( Option <$T>: <$T>:: checked_exact_div( 1 , 2 ) , None ) ;
541
+ assert_eq_const_safe!( Option <$T>: <$T>:: checked_exact_div( 0 , 0 ) , None ) ;
542
+ }
543
+ }
519
544
} ;
520
545
}
0 commit comments