within<T> function

Matcher within <T>({@required num distance, @required T from, DistanceFunction<T> distanceFunction })

Asserts that two values are within a certain distance from each other.

The distance is computed by a DistanceFunction.

If distanceFunction is null, a standard distance function is used for the runtimeType of the from argument. Standard functions are defined for the following types:

  • Color, whose distance is the maximum component-wise delta.
  • Offset, whose distance is the Euclidean distance computed using the method Offset.distance.
  • Rect, whose distance is the maximum component-wise delta.
  • Size, whose distance is the Offset.distance of the offset computed as the difference between two sizes.
  • int, whose distance is the absolute difference between two integers.
  • double, whose distance is the absolute difference between two doubles.

See also:

  • moreOrLessEquals, which is similar to this function, but specializes in doubles and has an optional epsilon parameter.
  • closeTo, which specializes in numbers only.

Implementation

Matcher within<T>({
  @required num distance,
  @required T from,
  DistanceFunction<T> distanceFunction,
}) {
  distanceFunction ??= _kStandardDistanceFunctions[from.runtimeType];

  if (distanceFunction == null) {
    throw ArgumentError(
      'The specified distanceFunction was null, and a standard distance '
      'function was not found for type ${from.runtimeType} of the provided '
      '`from` argument.'
    );
  }

  return _IsWithinDistance<T>(distanceFunction, from, distance);
}