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

Constraint

The Constraint class is the base of all built-in constraints within NUnit. It provides the operator overloads used to combine constraints.
using NUnit.Framework.Internal; using System; using System.Collections; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; namespace NUnit.Framework.Constraints { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] public abstract class Constraint : IAsyncConstraint, IConstraint, IResolveConstraint { private readonly Lazy<string> _displayName; public virtual string DisplayName => _displayName.Value; public abstract string Description { get; } [System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] [field: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] public object[] Arguments { [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] get; } [System.Runtime.CompilerServices.Nullable(2)] [field: System.Runtime.CompilerServices.Nullable(2)] public ConstraintBuilder Builder { [System.Runtime.CompilerServices.NullableContext(2)] get; [System.Runtime.CompilerServices.NullableContext(2)] set; } public ConstraintExpression And { get { ConstraintBuilder constraintBuilder = Builder; if (constraintBuilder == null) { constraintBuilder = new ConstraintBuilder(); constraintBuilder.Append(this); } constraintBuilder.Append(new AndOperator()); return new ConstraintExpression(constraintBuilder); } } public ConstraintExpression With => And; public ConstraintExpression Or { get { ConstraintBuilder constraintBuilder = Builder; if (constraintBuilder == null) { constraintBuilder = new ConstraintBuilder(); constraintBuilder.Append(this); } constraintBuilder.Append(new OrOperator()); return new ConstraintExpression(constraintBuilder); } } internal ConstraintExpression Instead { get { ConstraintBuilder constraintBuilder = Builder; if (constraintBuilder == null) { constraintBuilder = new ConstraintBuilder(); constraintBuilder.Append(this); } constraintBuilder.Append(new InsteadOperator()); return new ConstraintExpression(constraintBuilder); } } protected Constraint([System.Runtime.CompilerServices.Nullable(new byte[] { 1, 2 })] params object[] args) { Arguments = args; _displayName = new Lazy<string>(delegate { Type type = GetType(); string text = type.Name; if (type.IsGenericType) text = text.Substring(0, text.Length - 2); if (text.EndsWith("Constraint", StringComparison.Ordinal)) text = text.Substring(0, text.Length - 10); return text; }); } public abstract ConstraintResult ApplyTo<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual); public virtual ConstraintResult ApplyTo<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ActualValueDelegate<TActual> del) { if (AsyncToSyncAdapter.IsAsyncOperation(del)) return ApplyTo(AsyncToSyncAdapter.Await(TestExecutionContext.CurrentContext, () => del())); return ApplyTo(GetTestObject(del)); } public virtual ConstraintResult ApplyTo<[System.Runtime.CompilerServices.Nullable(2)] TActual>(ref TActual actual) { return ApplyTo(actual); } [AsyncStateMachine(typeof(<ApplyToAsync>d__16<>))] public virtual Task<ConstraintResult> ApplyToAsync<[System.Runtime.CompilerServices.Nullable(2)] TActual>(Func<Task<TActual>> taskDel) { <ApplyToAsync>d__16<TActual> stateMachine = default(<ApplyToAsync>d__16<TActual>); stateMachine.<>t__builder = AsyncTaskMethodBuilder<ConstraintResult>.Create(); stateMachine.<>4__this = this; stateMachine.taskDel = taskDel; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } [System.Runtime.CompilerServices.NullableContext(2)] protected virtual object GetTestObject<TActual>([System.Runtime.CompilerServices.Nullable(1)] ActualValueDelegate<TActual> del) { return del(); } public override string ToString() { string stringRepresentation = GetStringRepresentation(); if (Builder != null) return "<unresolved " + stringRepresentation + ">"; return stringRepresentation; } protected string GetStringRepresentation(IEnumerable arguments) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append("<"); stringBuilder.Append(DisplayName.ToLower()); foreach (object argument in arguments) { stringBuilder.Append(" "); stringBuilder.Append(<GetStringRepresentation>g__Displayable|19_0(argument)); } stringBuilder.Append(">"); return stringBuilder.ToString(); } protected virtual string GetStringRepresentation() { return GetStringRepresentation(Arguments); } public static Constraint operator &(Constraint left, Constraint right) { return new AndConstraint(((IResolveConstraint)left).Resolve(), ((IResolveConstraint)right).Resolve()); } public static Constraint operator |(Constraint left, Constraint right) { return new OrConstraint(((IResolveConstraint)left).Resolve(), ((IResolveConstraint)right).Resolve()); } public static Constraint operator !(Constraint constraint) { return new NotConstraint(((IResolveConstraint)constraint).Resolve()); } public DelayedConstraint.WithRawDelayInterval After(int delay) { return new DelayedConstraint.WithRawDelayInterval(new DelayedConstraint((Builder == null) ? this : Builder.Resolve(), delay)); } public DelayedConstraint After(int delayInMilliseconds, int pollingInterval) { return new DelayedConstraint((Builder == null) ? this : Builder.Resolve(), delayInMilliseconds, pollingInterval); } IConstraint IResolveConstraint.Resolve() { if (Builder != null) return Builder.Resolve(); return this; } } }