ArraysComparer
Comparator for two Arrays.
using System;
namespace NUnit.Framework.Constraints.Comparers
{
internal class ArraysComparer : IChainComparer
{
private readonly NUnitEqualityComparer _equalityComparer;
private readonly EnumerablesComparer _enumerablesComparer;
internal ArraysComparer(NUnitEqualityComparer equalityComparer, EnumerablesComparer enumerablesComparer)
{
_equalityComparer = equalityComparer;
_enumerablesComparer = enumerablesComparer;
}
public bool? Equal(object x, object y, ref Tolerance tolerance, bool topLevelComparison = true)
{
if (!x.GetType().IsArray || !y.GetType().IsArray || _equalityComparer.CompareAsCollection)
return null;
Array array = (Array)x;
Array array2 = (Array)y;
int rank = array.Rank;
if (rank != array2.Rank)
return false;
for (int i = 1; i < rank; i++) {
if (array.GetLength(i) != array2.GetLength(i))
return false;
}
return _enumerablesComparer.Equal(array, array2, ref tolerance, true);
}
}
}