AnyOfConstraint
AnyOfConstraint is used to determine whether the value is equal to any of the expected values.
using System;
using System.Collections;
using System.Collections.Generic;
namespace NUnit.Framework.Constraints
{
public class AnyOfConstraint : Constraint
{
private readonly object[] _expected;
private readonly NUnitEqualityComparer _comparer = new NUnitEqualityComparer();
public override string Description => "any of " + MsgUtils.FormatValue(_expected);
public AnyOfConstraint IgnoreCase {
get {
_comparer.IgnoreCase = true;
return this;
}
}
public AnyOfConstraint(object[] expected)
: base(expected)
{
Guard.ArgumentNotNull(expected, "expected");
Guard.ArgumentValid(expected.Length != 0, string.Format("{0} requires non-empty expected collection!", "AnyOfConstraint"), "expected");
_expected = expected;
}
public override ConstraintResult ApplyTo<TActual>(TActual actual)
{
Tolerance tolerance = Tolerance.Default;
object[] expected = _expected;
foreach (object y in expected) {
if (_comparer.AreEqual(actual, y, ref tolerance, true))
return new ConstraintResult(this, actual, ConstraintStatus.Success);
}
return new ConstraintResult(this, actual, ConstraintStatus.Failure);
}
public AnyOfConstraint Using(IComparer comparer)
{
_comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<T>(IComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<T>(Comparison<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using(IEqualityComparer comparer)
{
_comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<T>(IEqualityComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<T>(Func<T, T, bool> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
}
}