#![allow(dead_code)]
use cartan_core::Real;
use nalgebra::SVector;
pub fn assert_real_eq(actual: Real, expected: Real, tol: Real, context: &str) {
let diff = (actual - expected).abs();
assert!(
diff < tol,
"{}: expected {:.2e}, got {:.2e}, diff {:.2e} > tol {:.2e}",
context,
expected,
actual,
diff,
tol
);
}
pub fn assert_vec_eq<const N: usize>(
actual: &SVector<Real, N>,
expected: &SVector<Real, N>,
tol: Real,
context: &str,
) {
let diff = (actual - expected).norm();
assert!(
diff < tol,
"{}: vector diff norm {:.2e} > tol {:.2e}\n actual: {:?}\n expected: {:?}",
context,
diff,
tol,
actual.as_slice(),
expected.as_slice()
);
}
pub fn assert_near_zero(actual: Real, tol: Real, context: &str) {
assert!(
actual.abs() < tol,
"{}: expected ~0, got {:.2e} (tol {:.2e})",
context,
actual,
tol
);
}
pub fn assert_nonneg(actual: Real, context: &str) {
assert!(
actual >= -1e-15,
"{}: expected non-negative, got {:.2e}",
context,
actual
);
}