public void ToString_ReturnsExpectedString() { // Patch Object. var p = new Patch { Start1 = 20, Start2 = 21, Length1 = 18, Length2 = 17 }; p.Diffs.AddRange(new[] { Diff.Equal("jump"), Diff.Delete("s"), Diff.Insert("ed"), Diff.Equal(" over "), Diff.Delete("the"), Diff.Insert("a"), Diff.Equal("\nlaz") }); var strp = "@@ -21,18 +22,17 @@\n jump\n-s\n+ed\n over \n-the\n+a\n %0alaz\n"; Assert.AreEqual(strp, p.ToString(), "Patch: toString."); }
static void Main(string[] args) { var diffs = new List <Diff> { Diff.Insert(" "), Diff.Equal("a"), Diff.Insert("nd"), Diff.Equal(" [[Pennsylvania]]"), Diff.Delete(" and [[New") }; var patch1 = Patch.FromDiffs(diffs); Console.WriteLine(diffs.Text1()); Console.WriteLine(diffs.Text2()); var patch2 = Patch.Compute(diffs.Text1(), diffs.Text2(), 0, 4); Console.WriteLine(patch1.ToText()); Console.WriteLine(patch2.ToText()); //Debug.Assert(patch1.SequenceEqual(patch2)); ImmutableList <int> someList = Enumerable.Range(0, 10).ToImmutableList(); var record1 = new MyRecord(someList); var record2 = new MyRecord(someList); Console.WriteLine(record1 == record2); }
public void SubsequentEqualitiesAreMerged() { var diffs = new List <Diff> { Diff.Equal("a"), Diff.Equal("b"), Diff.Equal("c") }.CleanupMerge().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("abc") }, diffs); }
public void CleanupMerge_AlreadyCleaned_ReturnsSameList() { var result = new List <Diff> { Diff.Equal("a"), Diff.Delete("b"), Diff.Insert("c") }.CleanupMerge().ToList(); var expected = new[] { Diff.Equal("a"), Diff.Delete("b"), Diff.Insert("c") }; Assert.Equal(expected, result); }
public void FindEquivalentLocation2_LocationOnDeletion_FindsLocation() { var diffs = new List <Diff> { Diff.Equal("a"), Diff.Delete("1234"), Diff.Equal("xyz") }; Assert.Equal(1, diffs.FindEquivalentLocation2(3)); }
public void SlideEditRight() { // Slide edit right. var diffs = new List <Diff> { Diff.Equal("c"), Diff.Insert("ab"), Diff.Equal("a") }.CleanupMerge().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("ca"), Diff.Insert("ba") }, diffs); }
public void FindEquivalentLocation2_LocationOnDeletion_FindsLocation() { var diffs = new List <Diff> { Diff.Equal("a"), Diff.Delete("1234"), Diff.Equal("xyz") }; Assert.AreEqual(1, diffs.FindEquivalentLocation2(3), "diff_xIndex: Translation on deletion."); }
public void Levenshtein_WithTrailingEquality() { var diffs = new List <Diff> { Diff.Delete("abc"), Diff.Insert("1234"), Diff.Equal("xyz") }; Assert.Equal(4, diffs.Levenshtein()); }
public void Levenshtein_WithTrailingEquality() { var diffs = new List <Diff> { Diff.Delete("abc"), Diff.Insert("1234"), Diff.Equal("xyz") }; Assert.AreEqual(4, diffs.Levenshtein(), "diff_levenshtein: Levenshtein with trailing equality."); }
public void SubsequentEqualitiesAreMerged() { var diffs = new List <Diff> { Diff.Equal("a"), Diff.Equal("b"), Diff.Equal("c") }; diffs.CleanupMerge(); CollectionAssert.AreEqual(new List <Diff> { Diff.Equal("abc") }, diffs); }
public void PrefixSuffixDetection() { // Prefix and suffix detection. var diffs = new List <Diff> { Diff.Delete("a"), Diff.Insert("abc"), Diff.Delete("dc") }.CleanupMerge().ToList(); Assert.Equal( new List <Diff> { Diff.Equal("a"), Diff.Delete("d"), Diff.Insert("b"), Diff.Equal("c") }, diffs); }
public void SlideEditRight() { // Slide edit right. var diffs = new List <Diff> { Diff.Equal("c"), Diff.Insert("ab"), Diff.Equal("a") }; diffs.CleanupMerge(); CollectionAssert.AreEqual(new List <Diff> { Diff.Equal("ca"), Diff.Insert("ba") }, diffs); }
public void FindEquivalentLocation2_LocationInEquality_FindsLocation() { // Translate a location in text1 to text2. var diffs = new List <Diff> { Diff.Delete("a"), Diff.Insert("1234"), Diff.Equal("xyz") }; Assert.Equal(5, diffs.FindEquivalentLocation2(2)); }
public void SingleDiff_WhenCleaned_Remains() { // Blank lines. var diffs = new List <Diff> { Diff.Equal("AAA"), }.CleanupSemanticLossless().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("AAA"), }, diffs); }
public void EmptyMerge() { var diffs = new List <Diff> { Diff.Delete("b"), Diff.Insert("ab"), Diff.Equal("c") }.CleanupMerge().ToList(); Assert.Equal(new List <Diff> { Diff.Insert("a"), Diff.Equal("bc") }, diffs); }
public void EmptyEquality() { var diffs = new List <Diff> { Diff.Equal(""), Diff.Insert("a"), Diff.Equal("b") }.CleanupMerge().ToList(); Assert.Equal(new List <Diff> { Diff.Insert("a"), Diff.Equal("b") }, diffs); }
public void EmptyEquality() { var diffs = new List <Diff> { Diff.Equal(""), Diff.Insert("a"), Diff.Equal("b") }; diffs.CleanupMerge(); CollectionAssert.AreEqual(new List <Diff> { Diff.Insert("a"), Diff.Equal("b") }, diffs); }
public void DiffPrettyHtmlTest() { // Pretty print. var diffs = new List <Diff> { Diff.Equal("a\n"), Diff.Delete("<B>b</B>"), Diff.Insert("c&d") }; Assert.Equal( "<span>a¶<br></span><del style=\"background:#ffe6e6;\"><B>b</B></del><ins style=\"background:#e6ffe6;\">c&d</ins>", diffs.PrettyHtml()); }
public void ReverseOverlapElimination() { var diffs = new List <Diff> { Diff.Delete("xxxabc"), Diff.Insert("defxxx") }.CleanupSemantic(); Assert.Equal(new List <Diff> { Diff.Insert("def"), Diff.Equal("xxx"), Diff.Delete("abc") }, diffs); }
public void Text1_ReturnsText1() { var diffs = new List <Diff> { Diff.Equal("jump"), Diff.Delete("s"), Diff.Insert("ed"), Diff.Equal(" over "), Diff.Delete("the"), Diff.Insert("a"), Diff.Equal(" lazy") }; Assert.Equal("jumps over the lazy", diffs.Text1()); }
public void HittingTheEnd() { var diffs = new List <Diff> { Diff.Equal("xa"), Diff.Delete("a"), Diff.Equal("a") }.CleanupSemanticLossless().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("xaa"), Diff.Delete("a") }, diffs); }
public void SimpleElimination() { var diffs = new List <Diff> { Diff.Delete("a"), Diff.Equal("b"), Diff.Delete("c") }.CleanupSemantic(); Assert.Equal(new List <Diff> { Diff.Delete("abc"), Diff.Insert("b") }, diffs); }
public void LargeEquality() { var diffs = new List <Diff> { Diff.Insert(" "), Diff.Equal("a"), Diff.Insert("nd"), Diff.Equal(" [[Pennsylvania]]"), Diff.Delete(" and [[New") }; var patch = Patch.FromDiffs(diffs); Assert.Equal(diffs, Diff.Compute("a [[Pennsylvania]] and [[New", " and [[Pennsylvania]]", 0, false)); }
public void SentenceBoundaries() { var diffs = new List <Diff> { Diff.Equal("The xxx. The "), Diff.Insert("zzz. The "), Diff.Equal("yyy.") }.CleanupSemanticLossless().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("The xxx."), Diff.Insert(" The zzz."), Diff.Equal(" The yyy.") }, diffs); }
public void ThreeEditElimination() { var diffs = new List <Diff> { Diff.Insert("12"), Diff.Equal("x"), Diff.Delete("cd"), Diff.Insert("34") }.CleanupEfficiency(); Assert.Equal(new List <Diff> { Diff.Delete("xcd"), Diff.Insert("12x34") }, diffs); }
public void WordBoundaries() { var diffs = new List <Diff> { Diff.Equal("The c"), Diff.Insert("ow and the c"), Diff.Equal("at.") }.CleanupSemanticLossless().ToList(); Assert.Equal(new List <Diff> { Diff.Equal("The "), Diff.Insert("cow and the "), Diff.Equal("cat.") }, diffs); }
public void HittingTheEnd() { var diffs = new List <Diff> { Diff.Equal("xa"), Diff.Delete("a"), Diff.Equal("a") }; diffs.CleanupSemanticLossless(); CollectionAssert.AreEqual(new List <Diff> { Diff.Equal("xaa"), Diff.Delete("a") }, diffs); }
public void OverlapElimination() { var diffs = new List <Diff> { Diff.Delete("abcxxx"), Diff.Insert("xxxdef") }; diffs.CleanupSemantic(); CollectionAssert.AreEqual(new List <Diff> { Diff.Delete("abc"), Diff.Equal("xxx"), Diff.Insert("def") }, diffs); }
public void Text2_ReturnsText2() { // Compute the source and destination texts. var diffs = new List <Diff> { Diff.Equal("jump"), Diff.Delete("s"), Diff.Insert("ed"), Diff.Equal(" over "), Diff.Delete("the"), Diff.Insert("a"), Diff.Equal(" lazy") }; Assert.Equal("jumped over a lazy", diffs.Text2()); }
public void WordBoundaries() { var diffs = new List <Diff> { Diff.Equal("The c"), Diff.Delete("ow and the c"), Diff.Equal("at.") }.CleanupSemantic(); Assert.Equal(new List <Diff> { Diff.Equal("The "), Diff.Delete("cow and the "), Diff.Equal("cat.") }, diffs); }