public static void IndexOf_EquivalentDiacritics()
{
string s = "Exhibit a\u0300\u00C0";
string value = "\u00C0";
Helpers.PerformActionWithCulture(new CultureInfo("en-US"), () =>
{
Assert.Equal(10, s.IndexOf(value));
Assert.Equal(10, s.IndexOf(value, StringComparison.CurrentCulture));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCultureIgnoreCase));
Assert.Equal(10, s.IndexOf(value, StringComparison.Ordinal));
Assert.Equal(10, s.IndexOf(value, StringComparison.OrdinalIgnoreCase));
});
Helpers.PerformActionWithCulture(CultureInfo.InvariantCulture, () =>
{
Assert.Equal(10, s.IndexOf(value));
Assert.Equal(10, s.IndexOf(value, StringComparison.CurrentCulture));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCultureIgnoreCase));
});
value = "a\u0300"; // this diacritic combines with preceding character
Helpers.PerformActionWithCulture(new CultureInfo("en-US"), () =>
{
Assert.Equal(8, s.IndexOf(value));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCulture));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCultureIgnoreCase));
Assert.Equal(8, s.IndexOf(value, StringComparison.Ordinal));
Assert.Equal(8, s.IndexOf(value, StringComparison.OrdinalIgnoreCase));
});
Helpers.PerformActionWithCulture(CultureInfo.InvariantCulture, () =>
{
Assert.Equal(8, s.IndexOf(value));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCulture));
Assert.Equal(8, s.IndexOf(value, StringComparison.CurrentCultureIgnoreCase));
});
}