public void ContainsDocumentAndDiffs()
 {
     DiffSet diffSet = new DiffSet(new[] { new Diff(DiffKind.Change, new Range(0, 3), new Range(0, 3)) }, "abc", "def");
     Assert.AreEqual("abc", diffSet.LeftDocument);
     Assert.AreEqual("def", diffSet.RightDocument);
     Assert.AreElementsEqual(new[] { new Diff(DiffKind.Change, new Range(0, 3), new Range(0, 3)) }, diffSet.Diffs);
 }
 internal static void VerifyDiffSetIsValid(DiffSet diffSet)
 {
     foreach (Diff diff in diffSet.Diffs)
     {
         if (diff.Kind == DiffKind.NoChange)
             Assert.AreEqual(
                 diff.LeftRange.SubstringOf(diffSet.LeftDocument),
                 diff.RightRange.SubstringOf(diffSet.RightDocument));
         else
             Assert.AreNotEqual(
                 diff.LeftRange.SubstringOf(diffSet.LeftDocument),
                 diff.RightRange.SubstringOf(diffSet.RightDocument));
     }
 }
        public void WriteTo_LeftOnlyWithLimitedContext()
        {
            DiffSet diffSet = new DiffSet(new Diff[] { 
                new Diff(DiffKind.Change, new Range(0, 1), new Range(0, 1)), // change
                new Diff(DiffKind.NoChange, new Range(1, 20), new Range(1, 20)), // same
                new Diff(DiffKind.Change, new Range(21, 1), new Range(21, 0)), // deletion
                new Diff(DiffKind.NoChange, new Range(22, 20), new Range(21, 20)), // same
                new Diff(DiffKind.Change, new Range(42, 0), new Range(41, 1)), // addition
            }, "accccccccccccccccccccdeeeeeeeeeeeeeeeeeeee", "bcccccccccccccccccccceeeeeeeeeeeeeeeeeeeef");

            StructuredTextWriter writer = new StructuredTextWriter();
            diffSet.WriteTo(writer, DiffStyle.LeftOnly, 7);

            Assert.AreEqual(new StructuredText(new BodyTag()
            {
                Contents = {
                    new MarkerTag(Marker.DiffChange) { Contents = { new TextTag("a") } },
                    new TextTag("ccc"),
                    new MarkerTag(Marker.Ellipsis) { Contents = { new TextTag("...") } },
                    new TextTag("ccc"),
                    new MarkerTag(Marker.DiffDeletion) { Contents = { new TextTag("d") } },
                    new TextTag("eee"),
                    new MarkerTag(Marker.Ellipsis) { Contents = { new TextTag("...") } },
                    new TextTag("eee")
                }
            }), writer.ToStructuredText());
        }
        public void WriteTo_RightOnlyStyle()
        {
            DiffSet diffSet = new DiffSet(new Diff[] { 
                new Diff(DiffKind.Change, new Range(0, 1), new Range(0, 1)), // change
                new Diff(DiffKind.NoChange, new Range(1, 1), new Range(1, 1)), // same
                new Diff(DiffKind.Change, new Range(2, 1), new Range(2, 0)), // deletion
                new Diff(DiffKind.NoChange, new Range(3, 1), new Range(2, 1)), // same
                new Diff(DiffKind.Change, new Range(4, 0), new Range(3, 1)), // addition
            }, "acde", "bcef");

            StructuredTextWriter writer = new StructuredTextWriter();
            diffSet.WriteTo(writer, DiffStyle.RightOnly);
            TestLog.WriteLine(writer);

            Assert.AreEqual(new StructuredText(new BodyTag()
            {
                Contents = {
                    new MarkerTag(Marker.DiffChange) { Contents = { new TextTag("b") } },
                    new TextTag("ce"),
                    new MarkerTag(Marker.DiffDeletion) { Contents = { new TextTag("f") } }
                }
            }), writer.ToStructuredText());
        }
 public void WriteToThrowsWhenMaxContextLengthIsNegative()
 {
     DiffSet diffSet = new DiffSet(new Diff[] { }, "", "");
     StructuredTextWriter writer = new StructuredTextWriter();
     Assert.Throws<ArgumentOutOfRangeException>(() => diffSet.WriteTo(writer, DiffStyle.Interleaved, -1));
 }
 public void WriteToThrowsWhenWriterIsNull()
 {
     DiffSet diffSet = new DiffSet(new Diff[] { }, "", "");
     Assert.Throws<ArgumentNullException>(() => diffSet.WriteTo(null));
 }