AllItemsConstraint
public class AllItemsConstraint : PrefixConstraint, IEnumerableConstraint, IConstraint, IResolveConstraint
AllItemsConstraint applies another constraint to each
item in a collection, succeeding if they all succeed.
using NUnit.Framework.Internal;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Constraints
{
[NullableContext(1)]
[Nullable(0)]
public class AllItemsConstraint : PrefixConstraint, IEnumerableConstraint, IConstraint, IResolveConstraint
{
public override string DisplayName => "All";
public AllItemsConstraint(IConstraint itemConstraint)
: base(itemConstraint, "all items")
{
}
public override ConstraintResult ApplyTo<[Nullable(2)] TActual>(TActual actual)
{
IEnumerable source = ConstraintUtils.RequireActual<IEnumerable>(actual, "actual");
Type type = TypeHelper.FindPrimaryEnumerableInterfaceGenericTypeArgument(typeof(TActual));
if ((object)type != null && !(type == typeof(object)))
return Reflect.InvokeApplyToEnumerable(this, actual, type);
return ApplyToEnumerable(actual, source.Cast<object>());
}
public ConstraintResult ApplyToEnumerable<[Nullable(2)] TActual, [Nullable(2)] TItem>(TActual actual, IEnumerable<TItem> enumerable)
{
int num = 0;
foreach (TItem item in enumerable) {
if (!base.BaseConstraint.ApplyTo(item).IsSuccess)
return new EachItemConstraintResult(this, actual, item, num);
num++;
}
return new ConstraintResult(this, actual, ConstraintStatus.Success);
}
}
}