Skip to main content

evaluate_vector_eq_approx

Function evaluate_vector_eq_approx 

Source
pub fn evaluate_vector_eq_approx<T_expected, T_actual, T_expectedElement, T_actualElement>(
    expected: &T_expected,
    actual: &T_actual,
    evaluator: &dyn ApproximateEqualityEvaluator,
) -> (VectorComparisonResult, Option<f64>, Option<f64>)
where T_expected: AsRef<[T_expectedElement]>, T_actual: AsRef<[T_actualElement]>, T_expectedElement: TestableAsF64 + Debug, T_actualElement: TestableAsF64 + Debug,
Expand description

Compares two vectors element-wise using evaluator without asserting.

expected and actual may be slices, arrays, or Vec; each element pair is compared via evaluate_scalar_eq_approx.

Used by assert_vector_eq_approx! and assert_vector_ne_approx!; may also be used when building custom vector assertion macros.

§Returns

A tuple of:

  • VectorComparisonResult;
  • margin_factor from the first inexact element match, if any;
  • multiplier_factor from the first inexact element match, if any;

When lengths differ, returns VectorComparisonResult::DifferentLengths with (None, None) factors.

§Examples

use test_helpers::{
    evaluate_vector_eq_approx,
    multiplier,
    VectorComparisonResult,
};

let expected = &[3.0, -40404.0, 1.23456];
let actual = vec![3.0, -40410.0, 1.234567];
let (result, _, _) =
    evaluate_vector_eq_approx(&expected, &actual, &multiplier(0.00015));
assert!(matches!(result, VectorComparisonResult::ApproximatelyEqual));