beTolerantOf method
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);
}