File tree Expand file tree Collapse file tree 2 files changed +23
-2
lines changed
Expand file tree Collapse file tree 2 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -96,4 +96,12 @@ fn main() {
9696 assert_eq ! ( ( -z) . checked_mul( -z) , Some ( 0x734C_C2F2_A521 ) ) ;
9797 assert_eq ! ( ( z) . checked_mul( z) , Some ( 0x734C_C2F2_A521 ) ) ;
9898 assert_eq ! ( ( k) . checked_mul( k) , None ) ;
99+ let l: i128 = b ( i128:: min_value ( ) ) ;
100+ let o: i128 = b ( 17 ) ;
101+ assert_eq ! ( l. checked_sub( b( 2 ) ) , None ) ;
102+ assert_eq ! ( l. checked_add( l) , None ) ;
103+ assert_eq ! ( ( -( l + 1 ) ) . checked_add( 2 ) , None ) ;
104+ assert_eq ! ( l. checked_sub( l) , Some ( 0 ) ) ;
105+ assert_eq ! ( b( 1u128 ) . checked_shl( b( 127 ) ) , Some ( 1 << 127 ) ) ;
106+ assert_eq ! ( o. checked_shl( b( 128 ) ) , None ) ;
99107}
Original file line number Diff line number Diff line change 1010
1111// ignore-stage0
1212// ignore-stage1
13- #![ feature( i128_type) ]
13+ #![ feature( i128_type, test) ]
14+
15+ extern crate test;
16+ use test:: black_box as b;
1417
1518fn main ( ) {
1619 let x: u128 = 0xFFFF_FFFF_FFFF_FFFF__FFFF_FFFF_FFFF_FFFF ;
@@ -63,5 +66,15 @@ fn main() {
6366 format!( "{}" , u128 :: max_value( ) ) ) ;
6467 assert_eq ! ( "147573952589676412928" , format!( "{:?}" , j) ) ;
6568 // common traits
66- x. clone ( ) ;
69+ assert_eq ! ( x, b( x. clone( ) ) ) ;
70+ // overflow checks
71+ assert_eq ! ( ( z) . checked_mul( z) , Some ( 0x734C_C2F2_A521 ) ) ;
72+ assert_eq ! ( ( k) . checked_mul( k) , None ) ;
73+ let l: u128 = b ( u128:: max_value ( ) - 10 ) ;
74+ let o: u128 = b ( 17 ) ;
75+ assert_eq ! ( l. checked_add( b( 11 ) ) , None ) ;
76+ assert_eq ! ( l. checked_sub( l) , Some ( 0 ) ) ;
77+ assert_eq ! ( o. checked_sub( b( 18 ) ) , None ) ;
78+ assert_eq ! ( b( 1u128 ) . checked_shl( b( 127 ) ) , Some ( 1 << 127 ) ) ;
79+ assert_eq ! ( o. checked_shl( b( 128 ) ) , None ) ;
6780}
You can’t perform that action at this time.
0 commit comments