public static void IndexOf_HungarianDoubleCompression()
{
string source = "dzsdzs";
string target = "ddzs";
Helpers.PerformActionWithCulture(new CultureInfo("hu-HU"), () =>
{
/*
There are differences between Windows and ICU regarding contractions.
Windows has equal contraction collation weights, including case (target="Ddzs" same behavior as "ddzs").
ICU has different contraction collation weights, depending on locale collation rules.
If CurrentCultureIgnoreCase is specified, ICU will use 'secondary' collation rules
which ignore the contraction collation weights (defined as 'tertiary' rules)
*/
Assert.Equal(s_isWindows ? 0 : -1, source.IndexOf(target));
Assert.Equal(s_isWindows ? 0 : -1, source.IndexOf(target, StringComparison.CurrentCulture));
Assert.Equal(0, source.IndexOf(target, StringComparison.CurrentCultureIgnoreCase));
Assert.Equal(-1, source.IndexOf(target, StringComparison.Ordinal));
Assert.Equal(-1, source.IndexOf(target, StringComparison.OrdinalIgnoreCase));
});
Helpers.PerformActionWithCulture(CultureInfo.InvariantCulture, () =>
{
Assert.Equal(-1, source.IndexOf(target));
Assert.Equal(-1, source.IndexOf(target, StringComparison.CurrentCulture));
Assert.Equal(-1, source.IndexOf(target, StringComparison.CurrentCultureIgnoreCase));
});
}