Tests for leading_trailing_ones
This commit is contained in:
parent
6a7a69bde9
commit
2330e325cc
3 changed files with 55 additions and 0 deletions
|
|
@ -41,6 +41,7 @@
|
|||
#![feature(const_raw_ptr_deref)]
|
||||
#![feature(never_type)]
|
||||
#![feature(unwrap_infallible)]
|
||||
#![feature(leading_trailing_ones)]
|
||||
|
||||
extern crate test;
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,33 @@ macro_rules! int_module {
|
|||
assert_eq!(C.count_zeros(), bits as u32 - 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_leading_trailing_ones() {
|
||||
let bits = (mem::size_of::<$T>() * 8) as u32;
|
||||
|
||||
let a: $T = 0b0101_1111;
|
||||
assert_eq!(a.trailing_ones(), 5);
|
||||
assert_eq!((!a).leading_ones(), bits - 7);
|
||||
|
||||
assert_eq!(a.reverse_bits().leading_ones(), 5);
|
||||
|
||||
assert_eq!(_1.leading_ones(), bits);
|
||||
assert_eq!(_1.trailing_ones(), bits);
|
||||
|
||||
assert_eq!((_1 << 1).trailing_ones(), 0);
|
||||
assert_eq!(MAX.leading_ones(), 0);
|
||||
|
||||
assert_eq!((_1 << 1).leading_ones(), bits - 1);
|
||||
assert_eq!(MAX.trailing_ones(), bits - 1);
|
||||
|
||||
assert_eq!(_0.leading_ones(), 0);
|
||||
assert_eq!(_0.trailing_ones(), 0);
|
||||
|
||||
let x: $T = 0b0010_1100;
|
||||
assert_eq!(x.leading_ones(), 0);
|
||||
assert_eq!(x.trailing_ones(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_rotate() {
|
||||
assert_eq!(A.rotate_left(6).rotate_right(2).rotate_right(4), A);
|
||||
|
|
|
|||
|
|
@ -53,6 +53,33 @@ macro_rules! uint_module {
|
|||
assert!(C.count_zeros() == bits as u32 - 5);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_leading_trailing_ones() {
|
||||
let bits = (mem::size_of::<$T>() * 8) as u32;
|
||||
|
||||
let a: $T = 0b0101_1111;
|
||||
assert_eq!(a.trailing_ones(), 5);
|
||||
assert_eq!((!a).leading_ones(), bits - 7);
|
||||
|
||||
assert_eq!(a.reverse_bits().leading_ones(), 5);
|
||||
|
||||
assert_eq!(_1.leading_ones(), bits);
|
||||
assert_eq!(_1.trailing_ones(), bits);
|
||||
|
||||
assert_eq!((_1 << 1).trailing_ones(), 0);
|
||||
assert_eq!((_1 >> 1).leading_ones(), 0);
|
||||
|
||||
assert_eq!((_1 << 1).leading_ones(), bits - 1);
|
||||
assert_eq!((_1 >> 1).trailing_ones(), bits - 1);
|
||||
|
||||
assert_eq!(_0.leading_ones(), 0);
|
||||
assert_eq!(_0.trailing_ones(), 0);
|
||||
|
||||
let x: $T = 0b0010_1100;
|
||||
assert_eq!(x.leading_ones(), 0);
|
||||
assert_eq!(x.trailing_ones(), 0);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_rotate() {
|
||||
assert_eq!(A.rotate_left(6).rotate_right(2).rotate_right(4), A);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue