-
Notifications
You must be signed in to change notification settings - Fork 152
/
float.rs
48 lines (41 loc) · 1.4 KB
/
float.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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);
}