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;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Constraints
{
[System.Runtime.CompilerServices.NullableContext(1)]
[System.Runtime.CompilerServices.Nullable(0)]
public class AnyOfConstraint : Constraint
{
private readonly ICollection _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(ICollection expected)
: base(expected)
{
Guard.ArgumentNotNull(expected, "expected");
Guard.ArgumentValid(expected.Count > 0, "AnyOfConstraint requires non-empty expected collection!", "expected");
_expected = expected;
}
protected override string GetStringRepresentation()
{
return GetStringRepresentation(_expected);
}
public override ConstraintResult ApplyTo<[System.Runtime.CompilerServices.Nullable(2)] TActual>(TActual actual)
{
Tolerance tolerance = Tolerance.Default;
foreach (object item in _expected) {
if (_comparer.AreEqual(actual, item, ref tolerance))
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<[System.Runtime.CompilerServices.Nullable(2)] T>(IComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<[System.Runtime.CompilerServices.Nullable(2)] 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<[System.Runtime.CompilerServices.Nullable(2)] T>(IEqualityComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint Using<[System.Runtime.CompilerServices.Nullable(2)] T>(Func<T, T, bool> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public AnyOfConstraint UsingPropertiesComparer()
{
_comparer.CompareProperties = true;
return this;
}
}
}