Browse Source

2005-11-14 Atsushi Enomoto <[email protected]>

	* CompareInfo.cs : added support for OrdinalIgnoreCase.

	* CompareInfoTest.cs : added test for Compare() w/ OrdinalIgnoreCase.


svn path=/trunk/mcs/; revision=53004
Atsushi Eno 20 years ago
parent
commit
4a34097273

+ 4 - 0
mcs/class/corlib/System.Globalization/ChangeLog

@@ -1,3 +1,7 @@
+2005-11-14  Atsushi Enomoto  <[email protected]>
+
+	* CompareInfo.cs : added support for OrdinalIgnoreCase.
+
 2005-10-31  Miguel de Icaza  <[email protected]>
 
 	* HijriCalendar.cs, HebrewCalendar.cs, JulianCalendar.cs,

+ 10 - 0
mcs/class/corlib/System.Globalization/CompareInfo.cs

@@ -466,7 +466,12 @@ namespace System.Globalization
 			bool first)
 		{
 			return UseManagedCollation &&
+#if NET_2_0
+				((CompareOptions.Ordinal & opt) == 0 ||
+				(CompareOptions.OrdinalIgnoreCase & opt) == 0) ?
+#else
 				(CompareOptions.Ordinal & opt) == 0 ?
+#endif
 				internal_index_managed (s, sindex, count, c, opt, first) :
 				internal_index (s, sindex, count, c, opt, first);
 		}
@@ -529,7 +534,12 @@ namespace System.Globalization
 			bool first)
 		{
 			return UseManagedCollation &&
+#if NET_2_0
+				((CompareOptions.Ordinal & opt) == 0 ||
+				(CompareOptions.OrdinalIgnoreCase & opt) == 0) ?
+#else
 				(CompareOptions.Ordinal & opt) == 0 ?
+#endif
 				internal_index_managed (s1, sindex, count, s2, opt, first) :
 				internal_index (s1, sindex, count, s2, opt, first);
 		}

+ 4 - 0
mcs/class/corlib/Test/System.Globalization/ChangeLog

@@ -1,3 +1,7 @@
+2005-11-14  Atsushi Enomoto  <[email protected]>
+
+	* CompareInfoTest.cs : added test for Compare() w/ OrdinalIgnoreCase.
+
 2005-11-14  Atsushi Enomoto  <[email protected]>
 
 	* CompareInfoTest.cs : added more tests for some specific cultures

+ 29 - 0
mcs/class/corlib/Test/System.Globalization/CompareInfoTest.cs

@@ -1028,6 +1028,35 @@ public class CompareInfoTest : Assertion
 		AssertLastIndexOf ("#6", 0, "\uFF8A\uFF9E\uFF70\uFF99",
 			"\u30D0\u30FC\u30EB", CompareOptions.IgnoreWidth);
 	}
+
+#if NET_2_0
+	[Test]
+	public void OrdinalIgnoreCaseCompare ()
+	{
+		if (!doTest)
+			return;
+
+		// matches
+		AssertCompare ("#1", 0, "AE", "\u00C6", CompareOptions.None);
+		// should not match since it is Ordinal
+		AssertCompare ("#2", -133, "AE", "\u00C6", CompareOptions.OrdinalIgnoreCase);
+
+		AssertCompare ("#3", 1, "AE", "\u00E6", CompareOptions.None);
+		// matches
+		AssertCompare ("#4", 0, "AE", "\u00E6", CompareOptions.IgnoreCase);
+		// should not match since it is Ordinal
+		AssertCompare ("#5", -133, "AE", "\u00E6", CompareOptions.OrdinalIgnoreCase);
+
+		AssertCompare ("#6", 0, "AE", "ae", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#7", 0, "aE", "ae", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#8", 0, "aE", "ae", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#9", 0, "ae", "ae", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#10", 0, "AE", "AE", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#11", 0, "aE", "AE", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#12", 0, "aE", "AE", CompareOptions.OrdinalIgnoreCase);
+		AssertCompare ("#13", 0, "ae", "AE", CompareOptions.OrdinalIgnoreCase);
+	}
+#endif
 }
 
 }