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 = NUnitEqualityComparer.Default;
public CollectionItemsEqualConstraint IgnoreCase {
get {
comparer.IgnoreCase = true;
return this;
}
}
protected CollectionItemsEqualConstraint()
{
}
protected CollectionItemsEqualConstraint(object arg)
: base(arg)
{
}
public CollectionItemsEqualConstraint Using(IComparer comparer)
{
this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(IComparer<T> comparer)
{
((ICollection<EqualityAdapter>)this.comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(Comparison<T> comparer)
{
((ICollection<EqualityAdapter>)this.comparer.ExternalComparers).Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using(IEqualityComparer comparer)
{
this.comparer.ExternalComparers.Add(EqualityAdapter.For(comparer));
return this;
}
public CollectionItemsEqualConstraint Using<T>(IEqualityComparer<T> comparer)
{
((ICollection<EqualityAdapter>)this.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);
}
protected CollectionTally Tally(IEnumerable c)
{
return new CollectionTally(comparer, c);
}
}
}