public void diff_textTest() { TestDiffOperations dmp = new TestDiffOperations(); // Compute the source and destination texts. List <Diff> diffs = new List <Diff> { new Diff(Operation.EQUAL, "jump"), new Diff(Operation.DELETE, "s"), new Diff(Operation.INSERT, "ed"), new Diff(Operation.EQUAL, " over "), new Diff(Operation.DELETE, "the"), new Diff(Operation.INSERT, "a"), new Diff(Operation.EQUAL, " lazy") }; Assert.AreEqual("jumps over the lazy", dmp.GetText1(diffs)); Assert.AreEqual("jumped over a lazy", dmp.GetText2(diffs)); }
public void diff_deltaTest() { TestDiffOperations dmp = new TestDiffOperations(); // Convert a diff into delta string. List <Diff> diffs = new List <Diff> { new Diff(Operation.EQUAL, "jump"), new Diff(Operation.DELETE, "s"), new Diff(Operation.INSERT, "ed"), new Diff(Operation.EQUAL, " over "), new Diff(Operation.DELETE, "the"), new Diff(Operation.INSERT, "a"), new Diff(Operation.EQUAL, " lazy"), new Diff(Operation.INSERT, "old dog") }; string text1 = dmp.GetText1(diffs); Assert.AreEqual("jumps over the lazy", text1); string delta = dmp.ToDelta(diffs); Assert.AreEqual("=4\t-1\t+ed\t=6\t-3\t+a\t=5\t+old dog", delta); // Convert delta string into a diff. CollectionAssert.AreEqual(diffs, dmp.FromDelta(text1, delta)); // Generates error (19 < 20). try { dmp.FromDelta(text1 + "x", delta); Assert.Fail("diff_fromDelta: Too long."); } catch (ArgumentException) { // Exception expected. } // Generates error (19 > 18). try { dmp.FromDelta(text1.Substring(1), delta); Assert.Fail("diff_fromDelta: Too short."); } catch (ArgumentException) { // Exception expected. } // Generates error (%c3%xy invalid Unicode). try { dmp.FromDelta("", "+%c3%xy"); Assert.Fail("diff_fromDelta: Invalid character."); } catch (ArgumentException) { // Exception expected. } // Test deltas with special characters. char zero = (char)0; char one = (char)1; char two = (char)2; diffs = new List <Diff> { new Diff(Operation.EQUAL, "\u0680 " + zero + " \t %"), new Diff(Operation.DELETE, "\u0681 " + one + " \n ^"), new Diff(Operation.INSERT, "\u0682 " + two + " \\ |") }; text1 = dmp.GetText1(diffs); Assert.AreEqual("\u0680 " + zero + " \t %\u0681 " + one + " \n ^", text1); delta = dmp.ToDelta(diffs); // Lowercase, due to UrlEncode uses lower. Assert.AreEqual("=7\t-7\t+%da%82 %02 %5c %7c", delta, "diff_toDelta: Unicode."); CollectionAssert.AreEqual(diffs, dmp.FromDelta(text1, delta), "diff_fromDelta: Unicode."); // Verify pool of unchanged characters. diffs = new List <Diff> { new Diff(Operation.INSERT, "A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # ") }; string text2 = dmp.GetText2(diffs); Assert.AreEqual("A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ", text2, "diff_text2: Unchanged characters."); delta = dmp.ToDelta(diffs); Assert.AreEqual("+A-Z a-z 0-9 - _ . ! ~ * \' ( ) ; / ? : @ & = + $ , # ", delta, "diff_toDelta: Unchanged characters."); // Convert delta string into a diff. CollectionAssert.AreEqual(diffs, dmp.FromDelta("", delta), "diff_fromDelta: Unchanged characters."); }