public void diff_cleanupEfficiencyTest() { var dmp = new diff_match_patchTest{Diff_EditCost = 4}; // Cleanup operationally trivial equalities. // Null case. var diffs = new List<Diff>(); dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>(), diffs); // No elimination. diffs = new List<Diff>{ new Diff(Operation.Delete, "ab"), new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "wxyz"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "34") }; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Delete, "ab"), new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "wxyz"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "34") }, diffs); // Four-edit elimination. diffs = new List<Diff>{ new Diff(Operation.Delete, "ab"), new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "xyz"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "34") }; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Delete, "abxyzcd"), new Diff(Operation.Insert, "12xyz34") }, diffs); // Three-edit elimination. diffs = new List<Diff>{ new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "x"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "34") }; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Delete, "xcd"), new Diff(Operation.Insert, "12x34") }, diffs); // Backpass elimination. diffs = new List<Diff>{ new Diff(Operation.Delete, "ab"), new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "xy"), new Diff(Operation.Insert, "34"), new Diff(Operation.Equal, "z"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "56") }; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Delete, "abxyzcd"), new Diff(Operation.Insert, "12xy34z56") }, diffs); // High cost elimination. dmp.Diff_EditCost = 5; diffs = new List<Diff>{ new Diff(Operation.Delete, "ab"), new Diff(Operation.Insert, "12"), new Diff(Operation.Equal, "wxyz"), new Diff(Operation.Delete, "cd"), new Diff(Operation.Insert, "34") }; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.Delete, "abwxyzcd"), new Diff(Operation.Insert, "12wxyz34") }, diffs); dmp.Diff_EditCost = 4; }
public void diff_cleanupEfficiencyTest() { diff_match_patchTest dmp = new diff_match_patchTest(); dmp.Diff_EditCost = 4; List<Diff> diffs = new List<Diff> (); dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>(), diffs); diffs = new List<Diff>{ new Diff(Operation.DELETE, "ab"), new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "wxyz"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "34")}; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.DELETE, "ab"), new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "wxyz"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "34")}, diffs); diffs = new List<Diff>{ new Diff(Operation.DELETE, "ab"), new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "xyz"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "34")}; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.DELETE, "abxyzcd"), new Diff(Operation.INSERT, "12xyz34")}, diffs); diffs = new List<Diff>{ new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "x"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "34")}; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.DELETE, "xcd"), new Diff(Operation.INSERT, "12x34")}, diffs); diffs = new List<Diff>{ new Diff(Operation.DELETE, "ab"), new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "xy"), new Diff(Operation.INSERT, "34"), new Diff(Operation.EQUAL, "z"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "56")}; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.DELETE, "abxyzcd"), new Diff(Operation.INSERT, "12xy34z56")}, diffs); dmp.Diff_EditCost = 5; diffs = new List<Diff>{ new Diff(Operation.DELETE, "ab"), new Diff(Operation.INSERT, "12"), new Diff(Operation.EQUAL, "wxyz"), new Diff(Operation.DELETE, "cd"), new Diff(Operation.INSERT, "34")}; dmp.diff_cleanupEfficiency(diffs); CollectionAssert.AreEqual(new List<Diff>{ new Diff(Operation.DELETE, "abwxyzcd"), new Diff(Operation.INSERT, "12wxyz34")}, diffs); dmp.Diff_EditCost = 4; }