public void diff_linesToCharsTest() { diff_match_patchTest dmp = new diff_match_patchTest(); // Convert lines down to characters. List<string> tmpVector = new List<string>(); tmpVector.Add(""); tmpVector.Add("alpha\n"); tmpVector.Add("beta\n"); var result = dmp.diff_linesToChars("alpha\nbeta\nalpha\n", "beta\nalpha\nbeta\n"); Assert.AreEqual("\u0001\u0002\u0001", result[0]); Assert.AreEqual("\u0002\u0001\u0002", result[1]); CollectionAssert.AreEqual(tmpVector, (List<string>)result[2]); tmpVector.Clear(); tmpVector.Add(""); tmpVector.Add("alpha\r\n"); tmpVector.Add("beta\r\n"); tmpVector.Add("\r\n"); result = dmp.diff_linesToChars("", "alpha\r\nbeta\r\n\r\n\r\n"); Assert.AreEqual("", result[0]); Assert.AreEqual("\u0001\u0002\u0003\u0003", result[1]); CollectionAssert.AreEqual(tmpVector, (List<string>)result[2]); tmpVector.Clear(); tmpVector.Add(""); tmpVector.Add("a"); tmpVector.Add("b"); result = dmp.diff_linesToChars("a", "b"); Assert.AreEqual("\u0001", result[0]); Assert.AreEqual("\u0002", result[1]); CollectionAssert.AreEqual(tmpVector, (List<string>)result[2]); // More than 256 to reveal any 8-bit limitations. int n = 300; tmpVector.Clear(); StringBuilder lineList = new StringBuilder(); StringBuilder charList = new StringBuilder(); for (int x = 1; x < n + 1; x++) { tmpVector.Add(x + "\n"); lineList.Append(x + "\n"); charList.Append(Convert.ToChar(x)); } Assert.AreEqual(n, tmpVector.Count); string lines = lineList.ToString(); string chars = charList.ToString(); Assert.AreEqual(n, chars.Length); tmpVector.Insert(0, ""); result = dmp.diff_linesToChars(lines, ""); Assert.AreEqual(chars, result[0]); Assert.AreEqual("", result[1]); CollectionAssert.AreEqual(tmpVector, (List<string>)result[2]); }