diff options
Diffstat (limited to 'tests/float.rs')
-rw-r--r-- | tests/float.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tests/float.rs b/tests/float.rs new file mode 100644 index 0000000..f19f9c7 --- /dev/null +++ b/tests/float.rs @@ -0,0 +1,48 @@ +#[macro_use] +mod support; + +macro_rules! impl_float_tests { + ($t:ident) => { + glam_test!(test_lerp, { + let a = 0.; + let b = 10.; + assert_eq!($t::lerp(a, b, 0.), a); + assert_eq!($t::lerp(a, b, 0.5), 5.); + assert_eq!($t::lerp(a, b, 1.), b); + assert_eq!($t::lerp(a, a, 0.), a); + assert_eq!($t::lerp(a, a, 1.), a); + }); + + glam_test!(test_inverse_lerp, { + let a = 0.; + let b = 10.; + assert_eq!($t::inverse_lerp(a, b, 0.), 0.); + assert_eq!($t::inverse_lerp(a, b, 5.), 0.5); + assert_eq!($t::inverse_lerp(a, b, 10.), 1.); + assert_eq!($t::inverse_lerp(a, b, 15.), 1.5); + assert!($t::inverse_lerp(a, a, 0.).is_nan()); + assert!($t::inverse_lerp(a, a, 1.).is_infinite()); + }); + + glam_test!(test_remap, { + assert_eq!($t::remap(0., 0., 2., 0., 20.), 0.); + assert_eq!($t::remap(1., 0., 2., 0., 20.), 10.); + assert_eq!($t::remap(2., 0., 2., 0., 20.), 20.); + assert_eq!($t::remap(-5., -10., 30., 60., 20.), 55.); + assert!($t::remap(0., 0., 0., 0., 1.).is_nan()); + assert!($t::remap(1., 0., 0., 0., 1.).is_infinite()); + }); + }; +} + +mod float32 { + use glam::FloatExt; + + impl_float_tests!(f32); +} + +mod float64 { + use glam::FloatExt; + + impl_float_tests!(f64); +} |