public void BasicTest() { const string TestString = "test string"; str str1 = new str(TestString); // test constructor: Assert.AreEqual(str1.ToString(), TestString); // test directly assign string value str str2 = TestString; Assert.AreEqual(str2.ToString(), TestString); Assert.IsFalse(ReferenceEquals(str1, str2)); // test Equals Assert.IsTrue(str1.Equals(str2)); Assert.IsTrue(str1.Equals((object)str2)); // test == Assert.IsTrue(str1 == str2); // test != Assert.IsTrue(str1 != new str(TestString + " ")); // test + Assert.IsTrue(str1 + str1 == new str(TestString + TestString)); // test indexer Assert.AreEqual('e', str1[1]); str1[1] = 'E'; Assert.AreEqual(str1, "tEst string"); str1[1] = 'e'; // compare with built-in string Assert.IsTrue(str1.Equals(TestString)); }