CollectionItemsEqualConstraint
CollectionItemsEqualConstraint is the abstract base class for all
collection constraints that apply some notion of item equality
as a part of their operation.
using System;
using System.Collections;
using System.Collections.Generic;
namespace NUnit.Framework.Constraints
{
public abstract class CollectionItemsEqualConstraint : CollectionConstraint
{
private readonly NUnitEqualityComparer _comparer = new NUnitEqualityComparer();
protected bool IgnoringCase => _comparer.IgnoreCase;
protected bool UsingExternalComparer => _comparer.ExternalComparers.Count > 0;
public CollectionItemsEqualConstraint IgnoreCase {
get {
_comparer.IgnoreCase = true;
return this;
}
}
protected CollectionItemsEqualConstraint()
{
}
protected CollectionItemsEqualConstraint(object arg)
: base(arg)
{
}
public CollectionItemsEqualConstraint Using(IComparer comparer)
{
_comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(IComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(Comparison<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using(IEqualityComparer comparer)
{
_comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(IEqualityComparer<T> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(Func<T, T, bool> comparer)
{
((ICollection<EqualityAdapter>)_comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
internal CollectionItemsEqualConstraint Using(EqualityAdapter adapter)
{
_comparer.ExternalComparers.Add(adapter);
return this;
}
protected bool ItemsEqual(object x, object y)
{
Tolerance tolerance = Tolerance.Default;
return _comparer.AreEqual(x, y, ref tolerance, true);
}
protected CollectionTally Tally(IEnumerable c)
{
return new CollectionTally(_comparer, c);
}
}
}