[TestFixture]
public class StringTest
{
+ class NullFormatter : IFormatProvider, ICustomFormatter
+ {
+ public string Format (string format, object arg, IFormatProvider provider)
+ {
+ return null;
+ }
+
+ public object GetFormat (Type formatType)
+ {
+ return this;
+ }
+ }
+
+
private CultureInfo orgCulture;
[SetUp]
}
}
+ [Test]
+ public void CompareOrdinalWithOffset ()
+ {
+ string ab1 = "ab";
+ string ab2 = "a" + new string ('b', 1);
+
+ Assert.IsTrue (string.CompareOrdinal (ab1, 0, ab1, 1, 1) < 0, "#1");
+ Assert.IsTrue (string.CompareOrdinal (ab2, 0, ab1, 1, 1) < 0, "#2");
+ }
+
+ [Test]
+ public void CompareOrdinalSubstringWithNull ()
+ {
+ string lesser = "abc";
+ string greater = "xyz";
+
+ Assert.AreEqual (0, string.CompareOrdinal (null, 0, null, 0, 0), "substring both null");
+ Assert.AreEqual (-1, string.CompareOrdinal (null, 0, greater, 0, 0), "substring strA null");
+ Assert.AreEqual (-1, string.CompareOrdinal (null, 4, greater, 0, 0), "substring strA null; indexA greater than strA.Length");
+ Assert.AreEqual (-1, string.CompareOrdinal (null, 0, greater, 4, 0), "substring strA null; indexB greater than strB.Length");
+ Assert.AreEqual (-1, string.CompareOrdinal (null, -1, greater, -1, -1), "substring strA null; indexA, indexB, length negative");
+ Assert.AreEqual (1, string.CompareOrdinal (lesser, 0, null, 0, 0), "substring strB null");
+ Assert.AreEqual (1, string.CompareOrdinal (lesser, 4, null, 0, 0), "substring strB null; indexA greater than strA.Length");
+ Assert.AreEqual (1, string.CompareOrdinal (lesser, 0, null, 4, 0), "substring strB null; indexB greater than strB.Length");
+ Assert.AreEqual (1, string.CompareOrdinal (lesser, -1, null, -1, -1), "substring strB null; indexA, indexB, length negative");
+ }
+
[Test]
public void CompareTo ()
{
}
}
+ [Test]
+ public void Format ()
+ {
+ var s = String.Format (new NullFormatter (), "{0:}", "test");
+ Assert.AreEqual ("test", s);
+ }
+
[Test]
public void TestGetEnumerator ()
{
Assert.IsTrue ("ABC".Contains ("ABC"));
Assert.IsTrue ("ABC".Contains ("AB"));
Assert.IsTrue (!"ABC".Contains ("AD"));
- Assert.IsTrue (!"encyclop�dia".Contains("encyclopaedia"));
+ Assert.IsTrue (!"encyclopædia".Contains("encyclopaedia"));
+ }
+
+ [Test]
+ public void IndexOfIsCultureAwareWhileContainsIsNot ()
+ {
+ string a = "encyclopædia";
+ string b = "encyclopaedia";
+ Assert.IsFalse (a.Contains (b), "#1");
+ Assert.IsTrue (a.Contains ("æ"), "#1.1");
+ Assert.IsFalse (b.Contains ("æ"), "#1.2");
+ Assert.AreEqual (0, a.IndexOf (b), "#2");
+ Assert.AreEqual (8, a.IndexOf ('æ'), "#3");
+ Assert.AreEqual (-1, b.IndexOf ('æ'), "#4");
+ Assert.AreEqual (8, a.IndexOf ("æ"), "#5");
+ Assert.AreEqual (8, b.IndexOf ("æ"), "#6");
+
+ Assert.AreEqual (0, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.None), "#7");
+ Assert.AreEqual (-1, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.Ordinal), "#8");
}
[Test]
string s3 = new DateTime (2000, 3, 7).ToString ();
Assert.IsNull (String.IsInterned (s3), "#C1");
- Assert.AreSame (s3, String.Intern (s3), "#C2");
- Assert.AreSame (s3, String.IsInterned (s3), "#C3");
- Assert.AreSame (s3, String.IsInterned (new DateTime (2000, 3, 7).ToString ()), "#C4");
- Assert.AreSame (s3, String.Intern (new DateTime (2000, 3, 7).ToString ()), "#C5");
+
+ string s4 = String.Intern (s3);
+ Assert.AreEqual (s3, s4, "#C2");
+ Assert.AreSame (s4, String.IsInterned (s4), "#C3");
+ Assert.AreSame (s4, String.IsInterned (new DateTime (2000, 3, 7).ToString ()), "#C4");
+ Assert.AreSame (s4, String.Intern (new DateTime (2000, 3, 7).ToString ()), "#C5");
}
[Test]
}
}
+ [Test]
+ public void PadLeft_Overflow ()
+ {
+ try {
+ "x".PadLeft (int.MaxValue, '-');
+ } catch (OutOfMemoryException) {
+ }
+ }
+
[Test] // PadRight (Int32)
public void PadRight1 ()
{
Assert.AreEqual ("000000000000", "".PadRight (12, '0'), "#2");
}
+ [Test]
+ public void PadRight_Overflow ()
+ {
+ try {
+ "x".PadRight (int.MaxValue, '-');
+ } catch (OutOfMemoryException) {
+ }
+ }
+
[Test] // Remove (Int32, Int32)
public void Remove2 ()
{
Assert.AreEqual (2, res.Length, "#11-09-3");
Assert.AreEqual (0, " ".Split ((char[]) null, 2, StringSplitOptions.RemoveEmptyEntries).Length, "#12-00-0");
+
+ res = "not found".Split (new char[2]);
+ Assert.AreEqual ("not found", res[0], "#12-04-27");
+ Assert.AreEqual (1, res.Length, "#12-04-27-A");
}
[Test]