1 extern crate conv;
2 
3 #[macro_use] mod util;
4 
5 use conv::*;
6 
7 macro_rules! cty {
8     ($e:expr, $t:ty) => {
9         { let v: $t = $e; v }
10     };
11 }
12 
13 #[test]
test_unwraps()14 fn test_unwraps() {
15     assert_eq!(cty!(0i16.value_into().unwrap(), i32), 0);
16     assert_eq!(cty!(127i16.value_into().unwrap(), i8), 127);
17     assert_eq!(cty!(128i16.value_into().unwrap_or_saturate(), i8), 127);
18     assert_eq!(cty!(128i16.approx().unwrap_or_saturate(), i8), 127);
19     assert_eq!(cty!(128i16.approx_by::<Wrapping>().unwrap_or_saturate(), i8), -128);
20 
21     assert_eq!(cty!(16_777_216i32.value_into().unwrap(), f32), 16_777_216.0);
22     assert_eq!(cty!(16_777_216i32.value_into().unwrap_or_inf(), f32), 16_777_216.0);
23     assert_eq!(cty!(16_777_217i32.value_into().unwrap_or_inf(), f32), std::f32::INFINITY);
24     assert_eq!(cty!((-16_777_217i32).value_into().unwrap_or_inf(), f32), std::f32::NEG_INFINITY);
25 
26     assert_eq!(cty!(16_777_216i32.value_into().unwrap_or_invalid(), f32), 16_777_216.0);
27     assert!(cty!(16_777_217i32.value_into().unwrap_or_invalid(), f32).is_nan());
28     assert!(cty!((-16_777_217i32).value_into().unwrap_or_invalid(), f32).is_nan());
29 
30     assert_eq!(cty!(0u8.value_into().unwrap_ok(), u16), 0);
31 }
32