1 // Adapted from https://github.com/Alexhuszagh/rust-lexical.
2 
3 use crate::lexical::num::{AsPrimitive, Float, Integer, Number};
4 
check_as_primitive<T: AsPrimitive>(t: T)5 fn check_as_primitive<T: AsPrimitive>(t: T) {
6     let _: u32 = t.as_u32();
7     let _: u64 = t.as_u64();
8     let _: u128 = t.as_u128();
9     let _: usize = t.as_usize();
10     let _: f32 = t.as_f32();
11     let _: f64 = t.as_f64();
12 }
13 
14 #[test]
as_primitive_test()15 fn as_primitive_test() {
16     check_as_primitive(1u32);
17     check_as_primitive(1u64);
18     check_as_primitive(1u128);
19     check_as_primitive(1usize);
20     check_as_primitive(1f32);
21     check_as_primitive(1f64);
22 }
23 
check_number<T: Number>(x: T, y: T)24 fn check_number<T: Number>(x: T, y: T) {
25     // Copy, partialeq, partialord
26     let _ = x;
27     assert!(x < y);
28     assert!(x != y);
29 
30     // Operations
31     let _ = y + x;
32 
33     // Conversions already tested.
34 }
35 
36 #[test]
number_test()37 fn number_test() {
38     check_number(1u32, 5);
39     check_number(1u64, 5);
40     check_number(1u128, 5);
41     check_number(1usize, 5);
42     check_number(1f32, 5.0);
43     check_number(1f64, 5.0);
44 }
45 
check_integer<T: Integer>(x: T)46 fn check_integer<T: Integer>(x: T) {
47     // Bitwise operations
48     let _ = x & T::ZERO;
49 }
50 
51 #[test]
integer_test()52 fn integer_test() {
53     check_integer(65u32);
54     check_integer(65u64);
55     check_integer(65u128);
56     check_integer(65usize);
57 }
58 
check_float<T: Float>(x: T)59 fn check_float<T: Float>(x: T) {
60     // Check functions
61     let _ = x.pow10(5);
62     let _ = x.to_bits();
63     assert!(T::from_bits(x.to_bits()) == x);
64 
65     // Check properties
66     let _ = x.to_bits() & T::SIGN_MASK;
67     let _ = x.to_bits() & T::EXPONENT_MASK;
68     let _ = x.to_bits() & T::HIDDEN_BIT_MASK;
69     let _ = x.to_bits() & T::MANTISSA_MASK;
70 }
71 
72 #[test]
float_test()73 fn float_test() {
74     check_float(123f32);
75     check_float(123f64);
76 }
77