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

ExactCountConstraint

ExactCountConstraint applies another constraint to each item in a collection, succeeding only if a specified number of items succeed.
using NUnit.Framework.Internal; using System; using System.Collections; namespace NUnit.Framework.Constraints { public class ExactCountConstraint : Constraint { private readonly int _expectedCount; private readonly IConstraint _itemConstraint; public override string Description { get { string text = (_expectedCount == 0) ? "no item" : ((_expectedCount == 1) ? "exactly one item" : $"""{_expectedCount}"""); if (_itemConstraint == null) return text; return PrefixConstraint.FormatDescription(text, _itemConstraint); } } public ExactCountConstraint(int expectedCount) : base(Array.Empty<object>()) { _expectedCount = expectedCount; } public ExactCountConstraint(int expectedCount, IConstraint itemConstraint) : base(itemConstraint) { Guard.ArgumentNotNull(itemConstraint, "itemConstraint"); _itemConstraint = itemConstraint.Resolve(); _expectedCount = expectedCount; } public override ConstraintResult ApplyTo<TActual>(TActual actual) { IEnumerable enumerable = ConstraintUtils.RequireActual<IEnumerable>(actual, "actual", false); int num = 0; if (_itemConstraint == null) { foreach (object item in enumerable) { object obj = item; num++; } } else { foreach (object item2 in enumerable) { if (_itemConstraint.ApplyTo(item2).IsSuccess) num++; } } return new ConstraintResult(this, actual, num == _expectedCount); } } }