validateProgress function
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;
}
}