<PackageReference Include="NUnit" Version="3.10.1" />

SomeItemsConstraint

SomeItemsConstraint applies another constraint to each item in a collection, succeeding if any of them succeeds.
using NUnit.Framework.Internal; using System; using System.Collections; using System.Collections.Generic; namespace NUnit.Framework.Constraints { public class SomeItemsConstraint : PrefixConstraint { private EqualConstraint _equalConstraint; public override string DisplayName => "Some"; public SomeItemsConstraint(IConstraint itemConstraint) : base(itemConstraint) { _equalConstraint = (itemConstraint as EqualConstraint); base.DescriptionPrefix = "some item"; } public override ConstraintResult ApplyTo<TActual>(TActual actual) { foreach (object item in ConstraintUtils.RequireActual<IEnumerable>(actual, "actual", false)) { if (base.BaseConstraint.ApplyTo(item).IsSuccess) return new ConstraintResult(this, actual, ConstraintStatus.Success); } return new ConstraintResult(this, actual, ConstraintStatus.Failure); } public SomeItemsConstraint Using<TCollectionType, TMemberType>(Func<TCollectionType, TMemberType, bool> comparison) { CheckPrecondition("comparison"); _equalConstraint.Using(comparison); return this; } public SomeItemsConstraint Using(IComparer comparer) { CheckPrecondition("comparer"); _equalConstraint.Using(comparer); return this; } public SomeItemsConstraint Using<T>(IComparer<T> comparer) { CheckPrecondition("comparer"); _equalConstraint.Using(comparer); return this; } public SomeItemsConstraint Using<T>(Comparison<T> comparer) { CheckPrecondition("comparer"); _equalConstraint.Using(comparer); return this; } public SomeItemsConstraint Using(IEqualityComparer comparer) { CheckPrecondition("comparer"); _equalConstraint.Using(comparer); return this; } public SomeItemsConstraint Using<T>(IEqualityComparer<T> comparer) { CheckPrecondition("comparer"); _equalConstraint.Using(comparer); return this; } private void CheckPrecondition(string argument) { if (_equalConstraint == null) throw new ArgumentException("Using may only be used with constraints that check the equality of the items", argument); } } }