contains<T> function

IValidator contains<T>(
  1. T item, {
  2. String? message,
})

Checks whether the given value contains the item value of type T

Works for iterables and strings

Implementation

IValidator contains<T>(T item, {String? message}) {
  return Validator((value) {
    if (hasContainsProperty(value)) {
      return Result(
        isValid: value.contains(item),
        expectation: Expectation(
          message: message ?? 'contains ${prettifyValue(item)}',
          value: value,
          code: ExpectationCodes.valueContainsMissing,
          data: {'needle': prettifyValue(item)},
        ),
        value: value,
      );
    }

    return Expectation(
      message: '${value.runtimeType} does not have a contains property',
      value: value,
      code: ExpectationCodes.valueContainsMissing,
    ).toInvalidResult();
  });
}