PredicateConstraint<T>
Predicate constraint wraps a Predicate in a constraint,
returning success if the predicate is true.
using NUnit.Framework.Internal;
using System;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Constraints
{
[NullableContext(1)]
[Nullable(0)]
public class PredicateConstraint<[Nullable(2)] T> : Constraint
{
private readonly Predicate<T> _predicate;
public override string Description {
get {
string name = _predicate.GetMethodInfo().Name;
if (!name.StartsWith("<", StringComparison.Ordinal))
return "value matching " + name;
return "value matching lambda expression";
}
}
public PredicateConstraint(Predicate<T> predicate)
: base(Array.Empty<object>())
{
_predicate = predicate;
}
public override ConstraintResult ApplyTo<[Nullable(2)] TActual>(TActual actual)
{
T obj = ConstraintUtils.RequireActual<T>((object)actual, "actual", true);
return new ConstraintResult(this, actual, this._predicate(obj));
}
}
}