public static void DefaultInvariant_Compare()
{
CultureInfo culture1 = CultureInfo.CurrentCulture;
CultureInfo culture2 = CultureInfo.CurrentUICulture;
try
{
var cultureNames = new string[]
{
"cs-CZ","da-DK","de-DE","el-GR","en-US",
"es-ES","fi-FI","fr-FR","hu-HU","it-IT",
"ja-JP","ko-KR","nb-NO","nl-NL","pl-PL",
"pt-BR","pt-PT","ru-RU","sv-SE","tr-TR",
"zh-CN","zh-HK","zh-TW"
};
var string1 = new string[] { "Apple", "abc", };
var string2 = new string[] { "Æble", "ABC" };
foreach (string cultureName in cultureNames)
{
CultureInfo culture;
try
{
culture = new CultureInfo(cultureName);
}
catch (CultureNotFoundException)
{
continue;
}
// Set current culture
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
// All cultures should sort the same way, irrespective of the thread's culture
Comparer comp = Comparer.DefaultInvariant;
Assert.Equal(1, comp.Compare(string1[0], string2[0]));
Assert.Equal(-1, comp.Compare(string1[1], string2[1]));
}
}
finally
{
CultureInfo.CurrentCulture = culture1;
CultureInfo.CurrentUICulture = culture2;
}
}