macro_rules! assert_approx_ne {
($lhs:expr, $rhs:expr) => { ... };
($lhs:expr, $rhs:expr, rtol <= $rtol:expr) => { ... };
($lhs:expr, $rhs:expr, atol <= $atol:expr) => { ... };
($lhs:expr, $rhs:expr, rtol <= $rtol:expr, atol <= $atol:expr) => { ... };
($lhs:expr, $rhs:expr, atol <= $atol:expr, rtol <= $rtol:expr) => { ... };
}Expand description
Asserts that two values are not approximately equal.
This macro is intended for use in tests. If the values are approximately equal (within the specified tolerances), it panics with an error message.
§Syntax
assert_approx_ne!(left, right) // Default tolerances
assert_approx_ne!(left, right, atol <= tolerance) // Custom absolute tolerance
assert_approx_ne!(left, right, rtol <= tolerance) // Custom relative tolerance
assert_approx_ne!(left, right, atol <= a, rtol <= r) // Both tolerances
assert_approx_ne!(left, right, rtol <= r, atol <= a) // Order doesn't matter§Examples
use lox_test_utils::assert_approx_ne;
// Values differ significantly
assert_approx_ne!(1.0, 2.0);
assert_approx_ne!(1.0, 1.1);
// Custom tolerance - these values differ beyond 1%
assert_approx_ne!(1.0, 1.5, atol <= 0.01);
// Works with vectors
use glam::DVec3;
let v1 = DVec3::new(1.0, 2.0, 3.0);
let v2 = DVec3::new(1.0, 2.0, 5.0); // z differs significantly
assert_approx_ne!(v1, v2);§Panics
Panics if the values are approximately equal within the tolerances:
ⓘ
use lox_test_utils::assert_approx_ne;
// This will panic because the values are equal
assert_approx_ne!(1.0, 1.0);§See Also
approx_ne!- For non-panicking boolean checkassert_approx_eq!- For asserting equality