public static void Equals(string s1, object obj, StringComparison comparisonType, bool expected)
{
string s2 = obj as string;
if (s1 != null)
{
if (comparisonType == StringComparison.Ordinal)
{
// Use Equals(object)
Assert.Equal(expected, s1.Equals(obj));
Assert.Equal(expected, s1.Equals(s2));
}
// Use Equals(string, comparisonType)
Assert.Equal(expected, s1.Equals(s2, comparisonType));
}
if (comparisonType == StringComparison.Ordinal)
{
// Use Equals(string, string)
Assert.Equal(expected, string.Equals(s1, s2));
}
// Use Equals(string, string, StringComparison)
Assert.Equal(expected, string.Equals(s1, s2, comparisonType));
// If two strings are equal ordinally, then they must have the same hash code.
if (s1 != null && s2 != null && comparisonType == StringComparison.Ordinal)
{
Assert.Equal(expected, s1.GetHashCode().Equals(s2.GetHashCode()));
}
if (s1 != null)
{
Assert.Equal(s1.GetHashCode(), s1.GetHashCode());
}
}