示例#1
0
        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);
        }