示例#1
0
        public void diff_cleanupSemanticLosslessTest()
        {
            var dmp = new diff_match_patchTest();
            // Slide diffs to match logical boundaries.
            // Null case.
            var diffs = new List<Diff>();
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>(), diffs);

            // Blank lines.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "AAA\r\n\r\nBBB"),
                new Diff(Operation.Insert, "\r\nDDD\r\n\r\nBBB"),
                new Diff(Operation.Equal, "\r\nEEE")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Equal, "AAA\r\n\r\n"),
                new Diff(Operation.Insert, "BBB\r\nDDD\r\n\r\n"),
                new Diff(Operation.Equal, "BBB\r\nEEE")
            }, diffs);

            // Line boundaries.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "AAA\r\nBBB"),
                new Diff(Operation.Insert, " DDD\r\nBBB"),
                new Diff(Operation.Equal, " EEE")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Equal, "AAA\r\n"),
                new Diff(Operation.Insert, "BBB DDD\r\n"),
                new Diff(Operation.Equal, "BBB EEE")
            }, diffs);

            // Word boundaries.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "The c"),
                new Diff(Operation.Insert, "ow and the c"),
                new Diff(Operation.Equal, "at.")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Equal, "The "),
                new Diff(Operation.Insert, "cow and the "),
                new Diff(Operation.Equal, "cat.")
            }, diffs);

            // Alphanumeric boundaries.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "The-c"),
                new Diff(Operation.Insert, "ow-and-the-c"),
                new Diff(Operation.Equal, "at.")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Equal, "The-"),
                new Diff(Operation.Insert, "cow-and-the-"),
                new Diff(Operation.Equal, "cat.")
            }, diffs);

            // Hitting the start.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "a"),
                new Diff(Operation.Delete, "a"),
                new Diff(Operation.Equal, "ax")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Delete, "a"),
                new Diff(Operation.Equal, "aax")
            }, diffs);

            // Hitting the end.
            diffs = new List<Diff>{
                new Diff(Operation.Equal, "xa"),
                new Diff(Operation.Delete, "a"),
                new Diff(Operation.Equal, "a")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.Equal, "xaa"),
                new Diff(Operation.Delete, "a")
            }, diffs);
        }
        public void diff_cleanupSemanticLosslessTest()
        {
            diff_match_patchTest dmp = new diff_match_patchTest();
            // Slide diffs to match logical boundaries.
            List<Diff> diffs = new List<Diff>();
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>(), diffs);

            diffs = new List<Diff>
            {
                new Diff(Operation.EQUAL, "AAA\r\n\r\nBBB"),
                new Diff(Operation.INSERT, "\r\nDDD\r\n\r\nBBB"),
                new Diff(Operation.EQUAL, "\r\nEEE")
            };
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(
                new List<Diff>{
                    new Diff(Operation.EQUAL, "AAA\r\n\r\n"),
                    new Diff(Operation.INSERT, "BBB\r\nDDD\r\n\r\n"),
                    new Diff(Operation.EQUAL, "BBB\r\nEEE")}, diffs);

            diffs = new List<Diff>{
                new Diff(Operation.EQUAL, "AAA\r\nBBB"),
                new Diff(Operation.INSERT, " DDD\r\nBBB"),
                new Diff(Operation.EQUAL, " EEE")};
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(
                new List<Diff>{
                    new Diff(Operation.EQUAL, "AAA\r\n"),
                    new Diff(Operation.INSERT, "BBB DDD\r\n"),
                    new Diff(Operation.EQUAL, "BBB EEE")}, diffs);

            diffs = new List<Diff>{
                new Diff(Operation.EQUAL, "The c"),
                new Diff(Operation.INSERT, "ow and the c"),
                new Diff(Operation.EQUAL, "at.")};
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.EQUAL, "The "),
                new Diff(Operation.INSERT, "cow and the "),
                new Diff(Operation.EQUAL, "cat.")}, diffs);

            diffs = new List<Diff>{
                new Diff(Operation.EQUAL, "The-c"),
                new Diff(Operation.INSERT, "ow-and-the-c"),
                new Diff(Operation.EQUAL, "at.")};
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.EQUAL, "The-"),
                new Diff(Operation.INSERT, "cow-and-the-"),
                new Diff(Operation.EQUAL, "cat.")}, diffs);

            diffs = new List<Diff>{
                new Diff(Operation.EQUAL, "a"),
                new Diff(Operation.DELETE, "a"),
                new Diff(Operation.EQUAL, "ax")};
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.DELETE, "a"),
                new Diff(Operation.EQUAL, "aax")}, diffs);

            diffs = new List<Diff>{
                new Diff(Operation.EQUAL, "xa"),
                new Diff(Operation.DELETE, "a"),
                new Diff(Operation.EQUAL, "a")};
            dmp.diff_cleanupSemanticLossless(diffs);
            CollectionAssert.AreEqual(new List<Diff>{
                new Diff(Operation.EQUAL, "xaa"),
                new Diff(Operation.DELETE, "a")}, diffs);
        }