{
[TestFixture]
-public class CompareInfoTest : Assertion
+public class CompareInfoTest
{
static bool doTest = Environment.GetEnvironmentVariable ("MONO_DISABLE_MANAGED_COLLATION") != "yes";
{
string s1 = "foo";
- AssertEquals ("Compare two empty strings", 0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", ""));
- AssertEquals ("Compare string with empty string", 1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, ""));
- AssertEquals ("Compare empty string with string", -1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", s1));
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", ""), "Compare two empty strings");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, ""), "Compare string with empty string");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", s1), "Compare empty string with string");
- AssertEquals ("Compare two empty strings, with 0 offsets", 0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "", 0));
- AssertEquals ("Compare string with empty string, with 0 offsets", 1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, "", 0));
- AssertEquals ("Compare empty string with string, with 0 offsets", -1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, s1, 0));
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "", 0), "Compare two empty strings, with 0 offsets");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, "", 0), "Compare string with empty string, with 0 offsets");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, s1, 0), "Compare empty string with string, with 0 offsets");
- AssertEquals ("Compare two empty strings, with 0 offsets and specified lengths", 0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "".Length, "", 0, "".Length));
- AssertEquals ("Compare string with empty string, with 0 offsets and specified lengths", 1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1.Length, "", 0, "".Length));
- AssertEquals ("Compare empty string with string, with 0 offsets and specified lengths", -1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "".Length, s1, 0, s1.Length));
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "".Length, "", 0, "".Length), "Compare two empty strings, with 0 offsets and specified lengths");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1.Length, "", 0, "".Length), "Compare string with empty string, with 0 offsets and specified lengths");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", 0, "".Length, s1, 0, s1.Length), "Compare empty string with string, with 0 offsets and specified lengths");
- AssertEquals ("Compare two strings, with offsets == string lengths", 0, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, s1.Length, s1, s1.Length));
- AssertEquals ("Compare two strings, with first offset == string length", -1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, s1.Length, s1, 0));
- AssertEquals ("Compare two strings, with second offset == string length", 1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1, s1.Length));
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, s1.Length, s1, s1.Length), "Compare two strings, with offsets == string lengths");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, s1.Length, s1, 0), "Compare two strings, with first offset == string length");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1, s1.Length), "Compare two strings, with second offset == string length");
- AssertEquals ("Compare two strings, with zero lengths", 0, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, 0, s1, 0, 0));
- AssertEquals ("Compare two strings, with first length zero", -1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, 0, s1, 0, s1.Length));
- AssertEquals ("Compare strings, with second length zero", 1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1.Length, s1, 0, 0));
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, 0, s1, 0, 0), "Compare two strings, with zero lengths");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, 0, s1, 0, s1.Length), "Compare two strings, with first length zero");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare (s1, 0, s1.Length, s1, 0, 0), "Compare strings, with second length zero");
+
+ Assert.AreEqual (0, CultureInfo.InvariantCulture.CompareInfo.Compare (null, null), "Compare two null references");
+ Assert.AreEqual (1, CultureInfo.InvariantCulture.CompareInfo.Compare ("", null), "Compare a string to a null reference");
+ Assert.AreEqual (-1, CultureInfo.InvariantCulture.CompareInfo.Compare (null, ""), "Compare a null reference to a string");
}
void AssertSortKey (string message, byte [] expected, string test, CompareOptions opt, CompareInfo ci)
{
byte [] actual = ci.GetSortKey (test, opt).KeyData;
- AssertEquals (message, expected, actual);
+ Assert.AreEqual (expected, actual, message);
}
void AssertSortKeyLevel5 (string message, byte [] expected, string test)
;
byte [] actual = new byte [tmp.Length - idx];
Array.Copy (tmp, idx, actual, 0, actual.Length);
- AssertEquals (message, expected, actual);
+ Assert.AreEqual (expected, actual, message);
}
void AssertCompare (string message, int result, string s1, string s2)
{
int ret = ci.Compare (s1, s2, opt);
if (result == 0)
- AssertEquals (message, 0, ret);
+ Assert.AreEqual (0, ret, message);
else if (result < 0)
- Assert (message + String.Format ("(neg: {0})", ret), ret < 0);
+ Assert.IsTrue (ret < 0, message + String.Format ("(neg: {0})", ret));
else
- Assert (message + String.Format ("(pos: {0})", ret), ret > 0);
+ Assert.IsTrue (ret > 0, message + String.Format ("(pos: {0})", ret));
}
void AssertCompare (string message, int result,
{
int ret = invariant.Compare (s1, idx1, len1, s2, idx2, len2);
if (result == 0)
- AssertEquals (message, 0, ret);
+ Assert.AreEqual (0, ret, message);
else if (result < 0)
- Assert (message, ret < 0);
+ Assert.IsTrue (ret < 0, message);
else
- Assert (message, ret > 0);
+ Assert.IsTrue (ret > 0, message);
}
void AssertCompare (string message, int result,
{
int ret = ci.Compare (s1, idx1, len1, s2, idx2, len2, opt);
if (result == 0)
- AssertEquals (message, 0, ret);
+ Assert.AreEqual (0, ret, message);
else if (result < 0)
- Assert (message, ret < 0);
+ Assert.IsTrue (ret < 0, message);
else
- Assert (message, ret > 0);
+ Assert.IsTrue (ret > 0, message);
}
void AssertIndexOf (string message, int expected,
string source, char target)
{
- AssertEquals (message, expected,
- invariant.IndexOf (source, target));
+ Assert.AreEqual (expected, invariant.IndexOf (source, target), message);
}
void AssertIndexOf (string message, int expected, string source,
char target, CompareOptions opt)
{
- AssertEquals (message, expected,
- invariant.IndexOf (source, target, opt));
+ Assert.AreEqual (expected, invariant.IndexOf (source, target, opt), message);
}
void AssertIndexOf (string message, int expected, string source,
char target, int idx, int len, CompareOptions opt, CompareInfo ci)
{
- AssertEquals (message, expected,
- ci.IndexOf (source, target, idx, len, opt));
+ Assert.AreEqual (expected, ci.IndexOf (source, target, idx, len, opt), message);
}
void AssertIndexOf (string message, int expected,
string source, string target)
{
- AssertEquals (message, expected,
- invariant.IndexOf (source, target));
+ Assert.AreEqual (expected, invariant.IndexOf (source, target), message);
}
void AssertIndexOf (string message, int expected, string source,
string target, CompareOptions opt)
{
- AssertEquals (message, expected,
- invariant.IndexOf (source, target, opt));
+ Assert.AreEqual (expected, invariant.IndexOf (source, target, opt), message);
}
void AssertIndexOf (string message, int expected, string source,
string target, int idx, int len, CompareOptions opt, CompareInfo ci)
{
- AssertEquals (message, expected,
- ci.IndexOf (source, target, idx, len, opt));
+ Assert.AreEqual (expected, ci.IndexOf (source, target, idx, len, opt), message);
}
void AssertLastIndexOf (string message, int expected,
string source, char target)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target), message);
}
void AssertLastIndexOf (string message, int expected, string source,
char target, CompareOptions opt)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target, opt));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target, opt), message);
}
void AssertLastIndexOf (string message, int expected, string source,
char target, int idx, int len)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target, idx, len));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target, idx, len), message);
}
void AssertLastIndexOf (string message, int expected, string source,
char target, int idx, int len, CompareOptions opt, CompareInfo ci)
{
- AssertEquals (message, expected,
- ci.LastIndexOf (source, target, idx, len, opt));
+ Assert.AreEqual (expected, ci.LastIndexOf (source, target, idx, len, opt), message);
}
void AssertLastIndexOf (string message, int expected,
string source, string target)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target), message);
}
void AssertLastIndexOf (string message, int expected, string source,
string target, CompareOptions opt)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target, opt));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target, opt), message);
}
void AssertLastIndexOf (string message, int expected, string source,
string target, int idx, int len)
{
- AssertEquals (message, expected,
- invariant.LastIndexOf (source, target, idx, len));
+ Assert.AreEqual (expected, invariant.LastIndexOf (source, target, idx, len), message);
}
void AssertLastIndexOf (string message, int expected, string source,
string target, int idx, int len, CompareOptions opt, CompareInfo ci)
{
- AssertEquals (message, expected,
- ci.LastIndexOf (source, target, idx, len, opt));
+ Assert.AreEqual (expected, ci.LastIndexOf (source, target, idx, len, opt), message);
}
void AssertIsPrefix (string message, bool expected, string source,
string target)
{
- Assert (message, expected == invariant.IsPrefix (
- source, target));
+ Assert.IsTrue (expected == invariant.IsPrefix (source, target), message);
}
void AssertIsPrefix (string message, bool expected, string source,
string target, CompareOptions opt)
{
- Assert (message, expected == invariant.IsPrefix (
- source, target, opt));
+ Assert.IsTrue (expected == invariant.IsPrefix (source, target, opt), message);
}
void AssertIsSuffix (string message, bool expected, string source,
string target)
{
- Assert (message, expected == invariant.IsSuffix (
- source, target));
+ Assert.IsTrue (expected == invariant.IsSuffix (source, target), message);
}
void AssertIsSuffix (string message, bool expected, string source,
string target, CompareOptions opt)
{
- Assert (message, expected == invariant.IsSuffix (
- source, target, opt));
+ Assert.IsTrue (expected == invariant.IsSuffix (source, target, opt), message);
}
[Test]
}
+ [Test]
+ public void GetSortKey_Options ()
+ {
+ Array values = Enum.GetValues (typeof (CompareOptions));
+ foreach (int i in values) {
+ CompareOptions option = (CompareOptions) i;
+#if NET_2_0
+ if (option == CompareOptions.OrdinalIgnoreCase || option == CompareOptions.Ordinal) {
+ try {
+ french.GetSortKey ("foo", option);
+ Assert.Fail ("#1: " + option.ToString ());
+ } catch (ArgumentException ex) {
+ Assert.AreEqual (typeof (ArgumentException), ex.GetType (), "#2: " + option.ToString ());
+ Assert.IsNotNull (ex.Message, "#2: " + option.ToString ());
+ Assert.IsNotNull (ex.ParamName, "#3: " + option.ToString ());
+ Assert.AreEqual ("options", ex.ParamName, "#4: " + option.ToString ());
+ Assert.IsNull (ex.InnerException, "#5: " + option.ToString ());
+ }
+ } else {
+ french.GetSortKey ("foo", option);
+ }
+#else
+ french.GetSortKey ("foo", option);
+#endif
+ }
+ }
+
[Test]
#if NET_2_0
[Category ("NotDotNet")]
// expansion
// BUG in .NET 2.0: the same 00C6/00E6 issue.
AssertCompare ("#21", -1, "\u00E6", "aes");
+
+// bug #78748
+ AssertCompare ("#22", -1, "++)", "+-+)");
+ AssertCompare ("#23", -1, "+-+)", "+-+-)");
+ AssertCompare ("#24", 1, "+-+-)", "++)");
+ // BUG in .NET: it returns 1
+ AssertCompare ("#25", -1, "+-+-)", "-+-+)");
+ AssertCompare ("#26", -1, "+-+)", "-+-+)");
+ AssertCompare ("#27", -1, "++)", "-+-+)");
+ // bug #79714
+ AssertCompare ("#28", 1, "aa ", "A");
}
[Test]
AssertLastIndexOf ("#9", -1, "UA", '\u00C6');
AssertLastIndexOf ("#10", -1, "UE", '\u00C6');
AssertLastIndexOf ("#11", 0, "\\", '\\');
- AssertEquals ("#11en", 0, new CultureInfo ("en").CompareInfo.LastIndexOf ("\\", '\\'));
- AssertEquals ("#11ja", 0, new CultureInfo ("ja").CompareInfo.LastIndexOf ("\\", '\\'));
+ Assert.AreEqual (0, new CultureInfo ("en").CompareInfo.LastIndexOf ("\\", '\\'), "#11en");
+ Assert.AreEqual (0, new CultureInfo ("ja").CompareInfo.LastIndexOf ("\\", '\\'), "#11ja");
+ AssertLastIndexOf ("#12", 8, "/system/web", 'w');
+ Assert.AreEqual (8, new CultureInfo ("sv").CompareInfo.LastIndexOf ("/system/web", 'w'), "#12sv");
}
[Test]
AssertIsPrefix ("#15", true, "\uff21\uff21", "\u3007\uff21", CompareOptions.None);
AssertIsPrefix ("#16", true, "\uff21\uff21", "\uff21\u3007", CompareOptions.None);
AssertIsPrefix ("#17", true, "\\b\\a a", "\\b\\a a");
- Assert ("#17en", new CultureInfo ("en").CompareInfo.IsPrefix ("\\b\\a a", "\\b\\a a"));
- Assert ("#17ja", new CultureInfo ("ja").CompareInfo.IsPrefix ("\\b\\a a", "\\b\\a a"));
+ Assert.IsTrue (new CultureInfo ("en").CompareInfo.IsPrefix ("\\b\\a a", "\\b\\a a"), "#17en");
+ Assert.IsTrue (new CultureInfo ("ja").CompareInfo.IsPrefix ("\\b\\a a", "\\b\\a a"), "#17ja");
}
[Test]
AssertIsSuffix ("#18", true, "/test.css", "");
AssertIsSuffix ("#19", true, "/test.css", "/test.css");
AssertIsSuffix ("#20", true, "\\b\\a a", "\\b\\a a");
- Assert ("#20en", new CultureInfo ("en").CompareInfo.IsSuffix ("\\b\\a a", "\\b\\a a"));
- Assert ("#20ja", new CultureInfo ("ja").CompareInfo.IsSuffix ("\\b\\a a", "\\b\\a a"));
+ Assert.IsTrue (new CultureInfo ("en").CompareInfo.IsSuffix ("\\b\\a a", "\\b\\a a"), "#20en");
+ Assert.IsTrue (new CultureInfo ("ja").CompareInfo.IsSuffix ("\\b\\a a", "\\b\\a a"), "#20ja");
}
[Test]
if (!doTest)
return;
+ AssertIndexOf ("#0", 0, "", "", CompareOptions.None);
AssertIndexOf ("#1", -1, "ABC", "1", CompareOptions.None);
AssertIndexOf ("#2", 2, "ABCABC", "c", CompareOptions.IgnoreCase);
AssertIndexOf ("#3", 1, "ABCABC", "\uFF22", CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
AssertIndexOf ("#18", 0, "ABC", "\u3007");
AssertIndexOf ("#19", 0, "\\b\\a a", "\\b\\a a");
- AssertEquals ("#19en", 0, new CultureInfo ("en").CompareInfo.IndexOf ("\\b\\a a", "\\b\\a a"));
- AssertEquals ("#19ja", 0, new CultureInfo ("ja").CompareInfo.IndexOf ("\\b\\a a", "\\b\\a a"));
+ Assert.AreEqual (0, new CultureInfo ("en").CompareInfo.IndexOf ("\\b\\a a", "\\b\\a a"), "#19en");
+ Assert.AreEqual (0, new CultureInfo ("ja").CompareInfo.IndexOf ("\\b\\a a", "\\b\\a a"), "#19ja");
}
[Test]
AssertLastIndexOf ("#17", 1, "\uff21\uff21", "\u3007", CompareOptions.None);
AssertLastIndexOf ("#18", 1, "\u3007\uff21", "\uff21", CompareOptions.None);
AssertLastIndexOf ("#19", 0, "\\b\\a a", "\\b\\a a");
- AssertEquals ("#19en", 0, new CultureInfo ("en").CompareInfo.LastIndexOf ("\\b\\a a", "\\b\\a a"));
- AssertEquals ("#19ja", 0, new CultureInfo ("ja").CompareInfo.LastIndexOf ("\\b\\a a", "\\b\\a a"));
+ Assert.AreEqual (0, new CultureInfo ("en").CompareInfo.LastIndexOf ("\\b\\a a", "\\b\\a a"), "#19en");
+ Assert.AreEqual (0, new CultureInfo ("ja").CompareInfo.LastIndexOf ("\\b\\a a", "\\b\\a a"), "#19ja");
+ // bug #80612
+ AssertLastIndexOf ("#20", 8, "/system/web", "w");
+ Assert.AreEqual (8, new CultureInfo ("sv").CompareInfo.LastIndexOf ("/system/web", "w"), "#20sv");
}
[Test]
"\u30D0\u30FC\u30EB", CompareOptions.IgnoreWidth);
}
+ [Test]
+ public void LastIndexOfOrdinalString ()
+ {
+ if (!doTest)
+ return;
+
+ AssertLastIndexOf ("#1", -1, "ABC", "1", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#2", 5, "ABCABC", "C", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#3", -1, "ABCABC", "\uFF22", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#4", 4, "ABCABC", "BC", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#5", 4, "BBCBBC", "BC", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#6", 1, "original", "rig", CompareOptions.Ordinal);
+ AssertLastIndexOf ("#7", 0, "\\b\\a a", "\\b\\a a", CompareOptions.Ordinal);
+ }
+
[Test]
// for bug #76702
public void NullCharacter ()
{
- AssertEquals ("#1", -1, "MONO".IndexOf ("\0\0\0"));
- AssertEquals ("#2", -1, "MONO".LastIndexOf ("\0\0\0"));
- AssertEquals ("#3", 1, "MONO".CompareTo ("\0\0\0"));
+ Assert.AreEqual (-1, "MONO".IndexOf ("\0\0\0"), "#1");
+ Assert.AreEqual (-1, "MONO".LastIndexOf ("\0\0\0"), "#2");
+ Assert.AreEqual (1, "MONO".CompareTo ("\0\0\0"), "#3");
}
[Test]
// MS.NET treats it as equivalent, while in IndexOf() it does not match.
public void NullCharacterWeird ()
{
- AssertEquals ("#4", -1, "MONO".CompareTo ("MONO\0\0\0"));
+ Assert.AreEqual (-1, "MONO".CompareTo ("MONO\0\0\0"), "#4");
}
#if NET_2_0
// BUG in .NET 2.0 : It raises inappropriate ArgumentException.
// should not match since it is Ordinal
AssertCompare ("#2", -133, "AE", "\u00C6", CompareOptions.OrdinalIgnoreCase);
-return;
AssertCompare ("#3", 1, "AE", "\u00E6", CompareOptions.None);
// matches
AssertCompare ("#11", 0, "aE", "AE", CompareOptions.OrdinalIgnoreCase);
AssertCompare ("#12", 0, "aE", "AE", CompareOptions.OrdinalIgnoreCase);
AssertCompare ("#13", 0, "ae", "AE", CompareOptions.OrdinalIgnoreCase);
+ AssertCompare ("#14", 0, "ola", "OLA", CompareOptions.OrdinalIgnoreCase);
+ }
+
+ [Test]
+ public void OrdinalIgnoreCaseIndexOf ()
+ {
+ AssertIndexOf ("#1-1", 0, "ABC", "abc", CompareOptions.OrdinalIgnoreCase);
+ AssertIndexOf ("#1-2", -1, "AEBECE", "\u00E6", CompareOptions.OrdinalIgnoreCase);
+ AssertIndexOf ("#1-3", -1, "@_@", "`_`", CompareOptions.OrdinalIgnoreCase);
+ }
+
+ [Test]
+ public void OrdinalIgnoreCaseIndexOfChar ()
+ {
+ AssertIndexOf ("#2-1", 0, "ABC", 'a', CompareOptions.OrdinalIgnoreCase);
+ AssertIndexOf ("#2-2", -1, "AEBECE", '\u00C0', CompareOptions.OrdinalIgnoreCase);
+ AssertIndexOf ("#2-3", -1, "@_@", '`', CompareOptions.OrdinalIgnoreCase);
+ }
+
+ [Test]
+ public void OrdinalIgnoreCaseLastIndexOf ()
+ {
+ AssertLastIndexOf ("#1-1", 0, "ABC", "abc", CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#1-2", -1, "AEBECE", "\u00E6", CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#1-3", -1, "@_@", "`_`", CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#1-4", 1, "ABCDE", "bc", CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#1-5", -1, "BBBBB", "ab", CompareOptions.OrdinalIgnoreCase);
+ }
+
+ [Test]
+ public void OrdinalIgnoreCaseLastIndexOfChar ()
+ {
+ AssertLastIndexOf ("#2-1", 0, "ABC", 'a', CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#2-2", -1, "AEBECE", '\u00C0', CompareOptions.OrdinalIgnoreCase);
+ AssertLastIndexOf ("#2-3", -1, "@_@", '`', CompareOptions.OrdinalIgnoreCase);
+ }
+
+ [Test] // bug #80865
+ public void IsPrefixOrdinalIgnoreCase ()
+ {
+ Assert.IsTrue ("aaaa".StartsWith ("A", StringComparison.OrdinalIgnoreCase));
}
#endif
}