diff --git a/Cargo.toml b/Cargo.toml index b126b45..41ab5e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,3 +40,4 @@ serde_macros = { version = "0.7", optional = true } [dev-dependencies] glium = "0.14.0" +serde_json = "0.7" diff --git a/tests/transform.rs b/tests/transform.rs index e83372f..1688c69 100644 --- a/tests/transform.rs +++ b/tests/transform.rs @@ -16,28 +16,46 @@ extern crate cgmath; +#[cfg(feature = "eders")] +extern crate serde_json; + use cgmath::*; #[test] fn test_invert() { - let v = Vector3::new(1.0f64, 2.0, 3.0); - let t = Decomposed { + let v = Vector3::new(1.0f64, 2.0, 3.0); + let t = Decomposed { scale: 1.5f64, - rot: Quaternion::new(0.5f64,0.5,0.5,0.5), - disp: Vector3::new(6.0f64,-7.0,8.0) + rot: Quaternion::new(0.5f64, 0.5, 0.5, 0.5), + disp: Vector3::new(6.0f64, -7.0, 8.0), }; - let ti = t.inverse_transform().expect("Expected successful inversion"); - let vt = t.transform_vector(v); + let ti = t.inverse_transform().expect("Expected successful inversion"); + let vt = t.transform_vector(v); assert!(v.approx_eq(&ti.transform_vector(vt))); } #[test] fn test_look_at() { - let eye = Point3::new(0.0f64, 0.0, -5.0); - let center = Point3::new(0.0f64, 0.0, 0.0); - let up = Vector3::new(1.0f64, 0.0, 0.0); - let t: Decomposed, Quaternion> = Transform::look_at(eye, center, up); - let point = Point3::new(1.0f64, 0.0, 0.0); - let view_point = Point3::new(0.0f64, 1.0, 5.0); - assert!(t.transform_point(point).approx_eq(&view_point)); + let eye = Point3::new(0.0f64, 0.0, -5.0); + let center = Point3::new(0.0f64, 0.0, 0.0); + let up = Vector3::new(1.0f64, 0.0, 0.0); + let t: Decomposed, Quaternion> = Transform::look_at(eye, center, up); + let point = Point3::new(1.0f64, 0.0, 0.0); + let view_point = Point3::new(0.0f64, 1.0, 5.0); + assert!(t.transform_point(point).approx_eq(&view_point)); +} + +#[cfg(feature = "eders")] +#[test] +fn test_serialize() { + let t = Decomposed { + scale: 1.5f64, + rot: Quaternion::new(0.5f64, 0.5, 0.5, 0.5), + disp: Vector3::new(6.0f64, -7.0, 8.0), + }; + + let serialized = serde_json::to_string(&t).unwrap(); + let deserialized: Decomposed, Quaternion> = serde_json::from_str(&serialized).unwrap(); + + assert!(t.approx_eq(&deserialized)); }