use std::u32;
use approx_int::SmallValue;
#[test]
fn add_t_0() {
assert_eq!((SmallValue::new(128) + SmallValue::new(128)).min_bits(), 8);
}
#[test]
fn add_t_1() {
assert_eq!((SmallValue::new(128) + SmallValue::new(64)).min_bits(), 8);
}
#[should_panic(expected = "overflow")]
#[test]
fn add_t_2() {
let _c = SmallValue::new(u32::MAX) + SmallValue::new(u32::MAX);
}
#[test]
fn add_t_3() {
assert!(SmallValue::new(u32::MAX)
.checked_add(SmallValue::new(u32::MAX))
.is_none());
}
#[test]
fn sub_t_0() {
assert_eq!((SmallValue::new(128) - SmallValue::new(128)).min_bits(), 1);
}
#[test]
fn sub_t_1() {
assert_eq!((SmallValue::new(128) - SmallValue::new(64)).min_bits(), 6);
}
#[test]
fn sub_t_2() {
assert!(SmallValue::new(u32::MIN)
.checked_sub(SmallValue::new(u32::MAX))
.is_none());
}
#[test]
fn div_t_0() {
assert_eq!((SmallValue::new(128) / SmallValue::new(128)).min_bits(), 1);
}
#[test]
fn div_t_1() {
assert_eq!((SmallValue::new(128) / SmallValue::new(64)).min_bits(), 2);
}
#[test]
fn div_t_2() {
assert!(SmallValue::new(u32::MAX)
.checked_div(SmallValue::new(u32::MIN))
.is_none());
}
#[test]
fn mul_t_0() {
assert_eq!((SmallValue::new(128) * SmallValue::new(128)).min_bits(), 14);
}
#[test]
fn mul_t_1() {
assert_eq!(
(SmallValue::new(128u32) * SmallValue::new(128u32)).min_bits(),
14
);
}
#[test]
fn mul_t_2() {
assert!(SmallValue::new(u32::MAX)
.checked_mul(SmallValue::new(u32::MAX))
.is_none());
}
#[test]
fn rem_t_0() {
assert_eq!((SmallValue::new(128) % SmallValue::new(128)).min_bits(), 1);
}
#[test]
fn rem_t_1() {
assert_eq!((SmallValue::new(128) % SmallValue::new(64)).min_bits(), 1);
}
#[test]
fn rem_t_2() {
assert!(SmallValue::new(u32::MAX)
.checked_rem(SmallValue::new(u32::MIN))
.is_none());
}