StringsComparer
Comparator for two Strings.
using System;
using System.Collections.Generic;
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, equalityComparer.IgnoreLineEndingFormat))
return EqualMethodResult.ComparedNotEqual;
return EqualMethodResult.ComparedEqual;
}
}
return EqualMethodResult.TypesNotSupported;
}
public static bool Equals(string x, string y, bool ignoreCase, bool ignoreWhiteSpace, bool ignoreLineEndingFormat)
{
if (ignoreWhiteSpace) {
(int, int) valueTuple = MsgUtils.FindMismatchPosition(x, y, ignoreCase, true, ignoreLineEndingFormat);
int item = valueTuple.Item1;
int item2 = valueTuple.Item2;
if (item == -1)
return item2 == -1;
return false;
}
IEqualityComparer<string> equalityComparer = ignoreCase ? ((!ignoreLineEndingFormat) ? ((IEqualityComparer<string>)StringComparer.CurrentCultureIgnoreCase) : ((IEqualityComparer<string>)IgnoreLineEndingFormatStringComparer.CurrentCultureIgnoreCase)) : ((!ignoreLineEndingFormat) ? ((IEqualityComparer<string>)StringComparer.Ordinal) : ((IEqualityComparer<string>)IgnoreLineEndingFormatStringComparer.Ordinal));
IEqualityComparer<string> equalityComparer2 = equalityComparer;
return equalityComparer2.Equals(x, y);
}
}
}