validateProgress function

void validateProgress(
  1. List<double> p
)

Implementation

void validateProgress(List<double> p) {
  if (p.isEmpty) {
    throw ArgumentError('List is empty.');
  }

  var prev = p.last;
  var wraps = 0;

  for (var i = 0; i < p.length; i++) {
    final curr = p[i];

    if (curr < 0 || curr >= 1) {
      throw ArgumentError(
        'FloatMapping - Progress outside of range: ${p.join(', ')}',
      );
    }

    if (progressDistance(curr, prev).abs() <= distanceEpsilon) {
      throw ArgumentError(
        'FloatMapping - Progress repeats a value: ${p.join(', ')}',
      );
    }

    if (curr < prev) {
      wraps++;
      if (wraps > 1) {
        throw ArgumentError(
          'FloatMapping - Progress wraps more than once: ${p.join(', ')}',
        );
      }
    }

    prev = curr;
  }
}