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

AndConstraint

AndConstraint succeeds only if both members succeed.
namespace NUnit.Framework.Constraints { public class AndConstraint : BinaryConstraint { private class AndConstraintResult : ConstraintResult { private ConstraintResult leftResult; private ConstraintResult rightResult; public AndConstraintResult(AndConstraint constraint, object actual, ConstraintResult leftResult, ConstraintResult rightResult) : base(constraint, actual, leftResult.IsSuccess && rightResult.IsSuccess) { this.leftResult = leftResult; this.rightResult = rightResult; } public override void WriteActualValueTo(MessageWriter writer) { if (IsSuccess) base.WriteActualValueTo(writer); else if (!leftResult.IsSuccess) { leftResult.WriteActualValueTo(writer); } else { rightResult.WriteActualValueTo(writer); } } } public override string Description => Left.Description + " and " + Right.Description; public AndConstraint(IConstraint left, IConstraint right) : base(left, right) { } public override ConstraintResult ApplyTo<TActual>(TActual actual) { ConstraintResult constraintResult = Left.ApplyTo(actual); ConstraintResult rightResult = constraintResult.IsSuccess ? Right.ApplyTo(actual) : new ConstraintResult(Right, actual); return new AndConstraintResult(this, actual, constraintResult, rightResult); } } }