File tree 2 files changed +23
-2
lines changed
2 files changed +23
-2
lines changed Original file line number Diff line number Diff line change @@ -96,4 +96,12 @@ fn main() {
96
96
assert_eq ! ( ( -z) . checked_mul( -z) , Some ( 0x734C_C2F2_A521 ) ) ;
97
97
assert_eq ! ( ( z) . checked_mul( z) , Some ( 0x734C_C2F2_A521 ) ) ;
98
98
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 ) ;
99
107
}
Original file line number Diff line number Diff line change 10
10
11
11
// ignore-stage0
12
12
// ignore-stage1
13
- #![ feature( i128_type) ]
13
+ #![ feature( i128_type, test) ]
14
+
15
+ extern crate test;
16
+ use test:: black_box as b;
14
17
15
18
fn main ( ) {
16
19
let x: u128 = 0xFFFF_FFFF_FFFF_FFFF__FFFF_FFFF_FFFF_FFFF ;
@@ -63,5 +66,15 @@ fn main() {
63
66
format!( "{}" , u128 :: max_value( ) ) ) ;
64
67
assert_eq ! ( "147573952589676412928" , format!( "{:?}" , j) ) ;
65
68
// 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 ) ;
67
80
}
You can’t perform that action at this time.
0 commit comments