test conversions to isize/usize

This commit is contained in:
Trevor Spiteri 2019-06-27 23:28:35 +02:00
parent 66235d74e7
commit e3672475cf
1 changed files with 45 additions and 0 deletions

View File

@ -438,6 +438,51 @@ mod tests {
assert_eq!(FixedU128::<frac::U127>::from(true), 1); assert_eq!(FixedU128::<frac::U127>::from(true), 1);
} }
#[test]
fn to_size() {
let min_i24 = FixedI32::<frac::U8>::min_value();
let max_i24 = FixedI32::<frac::U8>::max_value();
let max_u24 = FixedU32::<frac::U8>::max_value();
assert_eq!(min_i24.overflowing_to_int::<isize>(), (!0 << 23, false));
assert_eq!(max_i24.overflowing_to_int::<isize>(), (!(!0 << 23), false));
assert_eq!(max_u24.overflowing_to_int::<isize>(), (!(!0 << 24), false));
assert_eq!(min_i24.overflowing_to_int::<usize>(), (!0 << 23, true));
assert_eq!(max_i24.overflowing_to_int::<usize>(), (!(!0 << 23), false));
assert_eq!(max_u24.overflowing_to_int::<usize>(), (!(!0 << 24), false));
let min_i56 = FixedI64::<frac::U8>::min_value();
let max_i56 = FixedI64::<frac::U8>::max_value();
let max_u56 = FixedU64::<frac::U8>::max_value();
#[cfg(target_pointer_width = "32")]
{
assert_eq!(min_i56.overflowing_to_int::<isize>(), (0, true));
assert_eq!(max_i56.overflowing_to_int::<isize>(), (!0, true));
assert_eq!(max_u56.overflowing_to_int::<isize>(), (!0, true));
assert_eq!(min_i56.overflowing_to_int::<usize>(), (0, true));
assert_eq!(max_i56.overflowing_to_int::<usize>(), (!0, true));
assert_eq!(max_u56.overflowing_to_int::<usize>(), (!0, true));
}
#[cfg(target_pointer_width = "64")]
{
assert_eq!(min_i56.overflowing_to_int::<isize>(), (!0 << 55, false));
assert_eq!(max_i56.overflowing_to_int::<isize>(), (!(!0 << 55), false));
assert_eq!(max_u56.overflowing_to_int::<isize>(), (!(!0 << 56), false));
assert_eq!(min_i56.overflowing_to_int::<usize>(), (!0 << 55, true));
assert_eq!(max_i56.overflowing_to_int::<usize>(), (!(!0 << 55), false));
assert_eq!(max_u56.overflowing_to_int::<usize>(), (!(!0 << 56), false));
}
let min_i120 = FixedI128::<frac::U8>::min_value();
let max_i120 = FixedI128::<frac::U8>::max_value();
let max_u120 = FixedU128::<frac::U8>::max_value();
assert_eq!(min_i120.overflowing_to_int::<isize>(), (0, true));
assert_eq!(max_i120.overflowing_to_int::<isize>(), (!0, true));
assert_eq!(max_u120.overflowing_to_int::<isize>(), (!0, true));
assert_eq!(min_i120.overflowing_to_int::<usize>(), (0, true));
assert_eq!(max_i120.overflowing_to_int::<usize>(), (!0, true));
assert_eq!(max_u120.overflowing_to_int::<usize>(), (!0, true));
}
#[test] #[test]
fn signed_from_float() { fn signed_from_float() {
type Fix = FixedI8<frac::U4>; type Fix = FixedI8<frac::U4>;