@@ -466,3 +466,59 @@ prim_int_impl!(i64, i64, u64);
466466#[ cfg( has_i128) ]
467467prim_int_impl ! ( i128 , i128 , u128 ) ;
468468prim_int_impl ! ( isize , isize , usize ) ;
469+
470+ #[ cfg( test) ]
471+ mod tests {
472+ use int:: PrimInt ;
473+
474+ #[ test]
475+ pub fn reverse_bits ( ) {
476+ use core:: { i16, i32, i64, i8} ;
477+
478+ assert_eq ! (
479+ PrimInt :: reverse_bits( 0x0123_4567_89ab_cdefu64 ) ,
480+ 0xf7b3_d591_e6a2_c480
481+ ) ;
482+
483+ assert_eq ! ( PrimInt :: reverse_bits( 0i8 ) , 0 ) ;
484+ assert_eq ! ( PrimInt :: reverse_bits( -1i8 ) , -1 ) ;
485+ assert_eq ! ( PrimInt :: reverse_bits( 1i8 ) , i8 :: MIN ) ;
486+ assert_eq ! ( PrimInt :: reverse_bits( i8 :: MIN ) , 1 ) ;
487+ assert_eq ! ( PrimInt :: reverse_bits( -2i8 ) , i8 :: MAX ) ;
488+ assert_eq ! ( PrimInt :: reverse_bits( i8 :: MAX ) , -2 ) ;
489+
490+ assert_eq ! ( PrimInt :: reverse_bits( 0i16 ) , 0 ) ;
491+ assert_eq ! ( PrimInt :: reverse_bits( -1i16 ) , -1 ) ;
492+ assert_eq ! ( PrimInt :: reverse_bits( 1i16 ) , i16 :: MIN ) ;
493+ assert_eq ! ( PrimInt :: reverse_bits( i16 :: MIN ) , 1 ) ;
494+ assert_eq ! ( PrimInt :: reverse_bits( -2i16 ) , i16 :: MAX ) ;
495+ assert_eq ! ( PrimInt :: reverse_bits( i16 :: MAX ) , -2 ) ;
496+
497+ assert_eq ! ( PrimInt :: reverse_bits( 0i32 ) , 0 ) ;
498+ assert_eq ! ( PrimInt :: reverse_bits( -1i32 ) , -1 ) ;
499+ assert_eq ! ( PrimInt :: reverse_bits( 1i32 ) , i32 :: MIN ) ;
500+ assert_eq ! ( PrimInt :: reverse_bits( i32 :: MIN ) , 1 ) ;
501+ assert_eq ! ( PrimInt :: reverse_bits( -2i32 ) , i32 :: MAX ) ;
502+ assert_eq ! ( PrimInt :: reverse_bits( i32 :: MAX ) , -2 ) ;
503+
504+ assert_eq ! ( PrimInt :: reverse_bits( 0i64 ) , 0 ) ;
505+ assert_eq ! ( PrimInt :: reverse_bits( -1i64 ) , -1 ) ;
506+ assert_eq ! ( PrimInt :: reverse_bits( 1i64 ) , i64 :: MIN ) ;
507+ assert_eq ! ( PrimInt :: reverse_bits( i64 :: MIN ) , 1 ) ;
508+ assert_eq ! ( PrimInt :: reverse_bits( -2i64 ) , i64 :: MAX ) ;
509+ assert_eq ! ( PrimInt :: reverse_bits( i64 :: MAX ) , -2 ) ;
510+ }
511+
512+ #[ test]
513+ #[ cfg( has_i128) ]
514+ pub fn reverse_bits_i128 ( ) {
515+ use core:: i128;
516+
517+ assert_eq ! ( PrimInt :: reverse_bits( 0i128 ) , 0 ) ;
518+ assert_eq ! ( PrimInt :: reverse_bits( -1i128 ) , -1 ) ;
519+ assert_eq ! ( PrimInt :: reverse_bits( 1i128 ) , i128 :: MIN ) ;
520+ assert_eq ! ( PrimInt :: reverse_bits( i128 :: MIN ) , 1 ) ;
521+ assert_eq ! ( PrimInt :: reverse_bits( -2i128 ) , i128 :: MAX ) ;
522+ assert_eq ! ( PrimInt :: reverse_bits( i128 :: MAX ) , -2 ) ;
523+ }
524+ }
0 commit comments