Skip to main content

assert_approx_ne

Macro assert_approx_ne 

Source
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