diff --git a/tests/cgmath.rs b/tests/cgmath.rs new file mode 100644 index 0000000..5c3a8ef --- /dev/null +++ b/tests/cgmath.rs @@ -0,0 +1,43 @@ +#![cfg(feature = "cgmath")] + +use cgmath as cg; +use splines::{Interpolation, Key, Spline}; + +#[test] +fn cgmath_vector_interpolation() { + use splines::Interpolate; + + let start = cg::Vector2::new(0.0, 0.0); + let mid = cg::Vector2::new(0.5, 0.5); + let end = cg::Vector2::new(1.0, 1.0); + + assert_eq!(Interpolate::lerp(start, end, 0.0), start); + assert_eq!(Interpolate::lerp(start, end, 1.0), end); + assert_eq!(Interpolate::lerp(start, end, 0.5), mid); +} + +#[test] +fn stroke_bezier_straight() { + use float_cmp::approx_eq; + + let keys = vec![ + Key::new( + 0.0, + cg::Vector2::new(0., 1.), + Interpolation::StrokeBezier(cg::Vector2::new(0., 1.), cg::Vector2::new(0., 1.)), + ), + Key::new( + 5.0, + cg::Vector2::new(5., 1.), + Interpolation::StrokeBezier(cg::Vector2::new(5., 1.), cg::Vector2::new(5., 1.)), + ), + ]; + let spline = Spline::from_vec(keys); + + assert!(approx_eq!(f32, spline.clamped_sample(0.0).unwrap().y, 1.)); + assert!(approx_eq!(f32, spline.clamped_sample(1.0).unwrap().y, 1.)); + assert!(approx_eq!(f32, spline.clamped_sample(2.0).unwrap().y, 1.)); + assert!(approx_eq!(f32, spline.clamped_sample(3.0).unwrap().y, 1.)); + assert!(approx_eq!(f32, spline.clamped_sample(4.0).unwrap().y, 1.)); + assert!(approx_eq!(f32, spline.clamped_sample(5.0).unwrap().y, 1.)); +} diff --git a/tests/mod.rs b/tests/integ.rs similarity index 80% rename from tests/mod.rs rename to tests/integ.rs index d443c0e..7ef2fd6 100644 --- a/tests/mod.rs +++ b/tests/integ.rs @@ -1,10 +1,5 @@ use splines::{spline::SampledWithKey, Interpolation, Key, Spline}; -#[cfg(feature = "cgmath")] -use cgmath as cg; -#[cfg(feature = "nalgebra")] -use nalgebra as na; - #[test] fn step_interpolation_f32() { let start = Key::new(0., 0., Interpolation::Step(0.)); @@ -163,61 +158,6 @@ fn several_interpolations_several_keys() { assert_eq!(spline.clamped_sample(11.), Some(4.)); } -#[cfg(feature = "cgmath")] -#[test] -fn stroke_bezier_straight() { - use float_cmp::approx_eq; - - let keys = vec![ - Key::new( - 0.0, - cg::Vector2::new(0., 1.), - Interpolation::StrokeBezier(cg::Vector2::new(0., 1.), cg::Vector2::new(0., 1.)), - ), - Key::new( - 5.0, - cg::Vector2::new(5., 1.), - Interpolation::StrokeBezier(cg::Vector2::new(5., 1.), cg::Vector2::new(5., 1.)), - ), - ]; - let spline = Spline::from_vec(keys); - - assert!(approx_eq!(f32, spline.clamped_sample(0.0).unwrap().y, 1.)); - assert!(approx_eq!(f32, spline.clamped_sample(1.0).unwrap().y, 1.)); - assert!(approx_eq!(f32, spline.clamped_sample(2.0).unwrap().y, 1.)); - assert!(approx_eq!(f32, spline.clamped_sample(3.0).unwrap().y, 1.)); - assert!(approx_eq!(f32, spline.clamped_sample(4.0).unwrap().y, 1.)); - assert!(approx_eq!(f32, spline.clamped_sample(5.0).unwrap().y, 1.)); -} - -#[cfg(feature = "cgmath")] -#[test] -fn cgmath_vector_interpolation() { - use splines::Interpolate; - - let start = cg::Vector2::new(0.0, 0.0); - let mid = cg::Vector2::new(0.5, 0.5); - let end = cg::Vector2::new(1.0, 1.0); - - assert_eq!(Interpolate::lerp(start, end, 0.0), start); - assert_eq!(Interpolate::lerp(start, end, 1.0), end); - assert_eq!(Interpolate::lerp(start, end, 0.5), mid); -} - -#[cfg(feature = "nalgebra")] -#[test] -fn nalgebra_vector_interpolation() { - use splines::Interpolate; - - let start = na::Vector2::new(0.0, 0.0); - let mid = na::Vector2::new(0.5, 0.5); - let end = na::Vector2::new(1.0, 1.0); - - assert_eq!(Interpolate::lerp(start, end, 0.0), start); - assert_eq!(Interpolate::lerp(start, end, 1.0), end); - assert_eq!(Interpolate::lerp(start, end, 0.5), mid); -} - #[test] fn add_key_empty() { let mut spline: Spline = Spline::from_vec(vec![]); diff --git a/tests/nalgebra.rs b/tests/nalgebra.rs new file mode 100644 index 0000000..6bf9186 --- /dev/null +++ b/tests/nalgebra.rs @@ -0,0 +1,16 @@ +#![cfg(feature = "nalgebra")] + +use nalgebra as na; + +#[test] +fn nalgebra_vector_interpolation() { + use splines::Interpolate; + + let start = na::Vector2::new(0.0, 0.0); + let mid = na::Vector2::new(0.5, 0.5); + let end = na::Vector2::new(1.0, 1.0); + + assert_eq!(Interpolate::lerp(start, end, 0.0), start); + assert_eq!(Interpolate::lerp(start, end, 1.0), end); + assert_eq!(Interpolate::lerp(start, end, 0.5), mid); +}