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); }