public void diff_charsToLinesTest() { var dmp = new diff_match_patchTest(); // Convert chars up to lines. var diffs = new List<Diff>{ new Diff(Operation.Equal, "\u0001\u0002\u0001"), new Diff(Operation.Insert, "\u0002\u0001\u0002") }; var tmpVector = new List<string>{"", "alpha\n", "beta\n"}; dmp.diff_charsToLines(diffs, tmpVector); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Equal, "alpha\nbeta\nalpha\n"), new Diff(Operation.Insert, "beta\nalpha\nbeta\n") }, diffs); // More than 256 to reveal any 8-bit limitations. const int n = 300; tmpVector.Clear(); var lineList = new StringBuilder(); var 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, ""); diffs = new List<Diff>{new Diff(Operation.Delete, chars)}; dmp.diff_charsToLines(diffs, tmpVector); CollectionAssert.AreEqual(new List<Diff> {new Diff(Operation.Delete, lines)}, diffs); }