use use_math::{Vector, Vector2, Vector3, Vector4, vector};
fn approx_eq(left: f64, right: f64) -> bool {
(left - right).abs() < 1.0e-12
}
#[test]
fn facade_namespace_reexports_vector_workflow() {
let displacement = vector::Vector2::new(3.0, 4.0);
let x = vector::Vector3::new(1.0, 0.0, 0.0);
let y = vector::Vector3::new(0.0, 1.0, 0.0);
let midpoint = vector::Vector4::ZERO.lerp(vector::Vector4::new(4.0, 8.0, 12.0, 16.0), 0.5);
assert!(approx_eq(displacement.magnitude(), 5.0));
assert!(approx_eq(vector::Vector2::ZERO.distance(displacement), 5.0));
assert_eq!(x.cross(y), vector::Vector3::new(0.0, 0.0, 1.0));
assert_eq!(
vector::Vector3::ONE.scale(2.0),
vector::Vector3::new(2.0, 2.0, 2.0)
);
assert_eq!(midpoint, vector::Vector4::new(2.0, 4.0, 6.0, 8.0));
}
#[test]
fn facade_root_reexports_vector_types() {
let generic = Vector::<5>::from_array([1.0, 2.0, 3.0, 4.0, 5.0]);
let displacement = Vector2::new(3.0, 4.0);
let normal = Vector3::new(0.0, 0.0, 1.0);
let midpoint = Vector4::ZERO.lerp(Vector4::new(4.0, 8.0, 12.0, 16.0), 0.5);
assert_eq!(generic.dimension(), 5);
assert!(approx_eq(displacement.magnitude(), 5.0));
assert!(approx_eq(normal.z(), 1.0));
for (actual, expected) in midpoint.into_array().into_iter().zip([2.0, 4.0, 6.0, 8.0]) {
assert!(approx_eq(actual, expected));
}
}