beTolerantOf method

NumericAssertions beTolerantOf(
  1. num nearbyValue, {
  2. required double tolerance,
})

Asserts an numeric value is close to another value within a specified value.

tolerance The maximum percentage of which the two values may differ.

Implementation

NumericAssertions beTolerantOf(
  num nearbyValue, {
  required double tolerance,
}) {
  if (tolerance >= 1 || tolerance <= 0) {
    throw ShouldlyTestFailureError(
      'Tolerance has to be greater than 0 and less than 1',
    );
  }

  final delta = subject! * tolerance;

  var diff = nearbyValue - subject!;
  if (diff < 0) diff = -diff;
  final isClose = diff <= delta;

  if (isReversed) {
    Execute.assertion.forCondition(isClose).failWith(
          '$subjectLabel\n    $subject\nshould not be tolerant of\n    $nearbyValue\nwith tolerance $tolerance%\n    but does.',
        );
  } else {
    Execute.assertion.forCondition(!isClose).failWith(
          '$subjectLabel\n    $subject\nshould be tolerant of\n    $nearbyValue\nwith tolerance $tolerance%\n    but does not.',
        );
  }

  return NumericAssertions(subject);
}