StringsComparer
Comparator for two Strings.
using System;
using System.Runtime.CompilerServices;
namespace NUnit.Framework.Constraints.Comparers
{
[NullableContext(1)]
[Nullable(0)]
internal static class StringsComparer
{
public static EqualMethodResult Equal(object x, object y, ref Tolerance tolerance, ComparisonState state, NUnitEqualityComparer equalityComparer)
{
string text = x as string;
if (text != null) {
string text2 = y as string;
if (text2 != null) {
if (tolerance.HasVariance)
return EqualMethodResult.ToleranceNotSupported;
if (!Equals(text, text2, equalityComparer.IgnoreCase, equalityComparer.IgnoreWhiteSpace))
return EqualMethodResult.ComparedNotEqual;
return EqualMethodResult.ComparedEqual;
}
}
return EqualMethodResult.TypesNotSupported;
}
public static bool Equals(string x, string y, bool ignoreCase, bool ignoreWhiteSpace)
{
if (ignoreWhiteSpace) {
(int, int) valueTuple = MsgUtils.FindMismatchPosition(x, y, ignoreCase, true);
int item = valueTuple.Item1;
int item2 = valueTuple.Item2;
if (item == -1)
return item2 == -1;
return false;
}
return x.Equals(y, ignoreCase ? StringComparison.CurrentCultureIgnoreCase : StringComparison.Ordinal);
}
}
}