aboutsummaryrefslogtreecommitdiff
path: root/tests/float.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/float.rs')
-rw-r--r--tests/float.rs48
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);
+}