validateAt method

  1. @override
SchemaResult<int> validateAt(
  1. Object? input,
  2. List<Object> path
)
override

Validates input located at path within a larger document.

Implementations must report issues with paths rooted at path.

Implementation

@override
SchemaResult<int> validateAt(Object? input, List<Object> path) {
  final int parsed;
  if (input is int) {
    parsed = input;
  } else if (input is double &&
      input.isFinite &&
      input == input.truncateToDouble()) {
    parsed = input.truncate();
  } else {
    return _typeFailure(path, 'integer', input);
  }
  final issues = <SchemaIssue>[];
  if (minimum != null && parsed < minimum!) {
    issues.add(SchemaIssue(
      path: path,
      message: 'Value must be >= $minimum, got $parsed',
      actual: input,
    ));
  }
  if (maximum != null && parsed > maximum!) {
    issues.add(SchemaIssue(
      path: path,
      message: 'Value must be <= $maximum, got $parsed',
      actual: input,
    ));
  }
  return issues.isEmpty ? SchemaSuccess(parsed) : SchemaFailure(issues);
}