#![cfg(test)]
use multitype::Integral;
#[test]
fn test_highest_one() {
assert_eq!(Integral::highest_one(0_u8), None);
assert_eq!(Integral::highest_one(1_u8), Some(0));
assert_eq!(Integral::highest_one(2_u8), Some(1));
assert_eq!(Integral::highest_one(3_u8), Some(1));
assert_eq!(Integral::highest_one(4_u8), Some(2));
assert_eq!(Integral::highest_one(5_u8), Some(2));
assert_eq!(Integral::highest_one(6_u8), Some(2));
assert_eq!(Integral::highest_one(7_u8), Some(2));
assert_eq!(Integral::highest_one(-0_i8), None);
assert_eq!(Integral::highest_one(-1_i8), Some(7));
assert_eq!(Integral::highest_one(-2_i8), Some(7));
assert_eq!(Integral::highest_one(-3_i8), Some(7));
assert_eq!(Integral::highest_one(-4_i8), Some(7));
assert_eq!(Integral::highest_one(-5_i8), Some(7));
assert_eq!(Integral::highest_one(-6_i8), Some(7));
assert_eq!(Integral::highest_one(-7_i8), Some(7));
}
#[test]
fn test_isolate_highest_one() {
assert_eq!(Integral::isolate_highest_one(0_u8), 0);
assert_eq!(Integral::isolate_highest_one(1_u8), 1);
assert_eq!(Integral::isolate_highest_one(2_u8), 2);
assert_eq!(Integral::isolate_highest_one(3_u8), 2);
assert_eq!(Integral::isolate_highest_one(4_u8), 4);
assert_eq!(Integral::isolate_highest_one(5_u8), 4);
assert_eq!(Integral::isolate_highest_one(6_u8), 4);
assert_eq!(Integral::isolate_highest_one(7_u8), 4);
assert_eq!(Integral::isolate_highest_one(-0_i8), 0);
assert_eq!(Integral::isolate_highest_one(-1_i8), -128);
assert_eq!(Integral::isolate_highest_one(-2_i8), -128);
assert_eq!(Integral::isolate_highest_one(-3_i8), -128);
assert_eq!(Integral::isolate_highest_one(-4_i8), -128);
assert_eq!(Integral::isolate_highest_one(-5_i8), -128);
assert_eq!(Integral::isolate_highest_one(-6_i8), -128);
assert_eq!(Integral::isolate_highest_one(-7_i8), -128);
}
#[test]
fn test_isolate_lowest_one() {
assert_eq!(Integral::isolate_lowest_one(0_u8), 0);
assert_eq!(Integral::isolate_lowest_one(1_u8), 1);
assert_eq!(Integral::isolate_lowest_one(2_u8), 2);
assert_eq!(Integral::isolate_lowest_one(3_u8), 1);
assert_eq!(Integral::isolate_lowest_one(4_u8), 4);
assert_eq!(Integral::isolate_lowest_one(5_u8), 1);
assert_eq!(Integral::isolate_lowest_one(6_u8), 2);
assert_eq!(Integral::isolate_lowest_one(7_u8), 1);
assert_eq!(Integral::isolate_lowest_one(-0_i8), 0);
assert_eq!(Integral::isolate_lowest_one(-1_i8), 1);
assert_eq!(Integral::isolate_lowest_one(-2_i8), 2);
assert_eq!(Integral::isolate_lowest_one(-3_i8), 1);
assert_eq!(Integral::isolate_lowest_one(-4_i8), 4);
assert_eq!(Integral::isolate_lowest_one(-5_i8), 1);
assert_eq!(Integral::isolate_lowest_one(-6_i8), 2);
assert_eq!(Integral::isolate_lowest_one(-7_i8), 1);
}
#[test]
fn test_lowest_one() {
assert_eq!(Integral::lowest_one(0_u8), None);
assert_eq!(Integral::lowest_one(1_u8), Some(0));
assert_eq!(Integral::lowest_one(2_u8), Some(1));
assert_eq!(Integral::lowest_one(3_u8), Some(0));
assert_eq!(Integral::lowest_one(4_u8), Some(2));
assert_eq!(Integral::lowest_one(5_u8), Some(0));
assert_eq!(Integral::lowest_one(6_u8), Some(1));
assert_eq!(Integral::lowest_one(7_u8), Some(0));
assert_eq!(Integral::lowest_one(-0_i8), None);
assert_eq!(Integral::lowest_one(-1_i8), Some(0));
assert_eq!(Integral::lowest_one(-2_i8), Some(1));
assert_eq!(Integral::lowest_one(-3_i8), Some(0));
assert_eq!(Integral::lowest_one(-4_i8), Some(2));
assert_eq!(Integral::lowest_one(-5_i8), Some(0));
assert_eq!(Integral::lowest_one(-6_i8), Some(1));
assert_eq!(Integral::lowest_one(-7_i8), Some(0));
}
#[test]
fn test_midpoint() {
assert_eq!(Integral::midpoint(0_u128, 0_u128), 0_u128);
assert_eq!(Integral::midpoint(0_u128, u128::MAX), u128::MAX / 2);
assert_eq!(Integral::midpoint(u128::MAX, u128::MAX), u128::MAX);
assert_eq!(Integral::midpoint(u128::MAX - 2, u128::MAX), u128::MAX - 1);
assert_eq!(Integral::midpoint(i128::MIN, i128::MAX), 0);
}