Esempio n. 1
0
        public void SingleLineModeSpeedup()
        {
            var a = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
            var b = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij";

            CollectionAssert.AreEqual(Diff.Compute(a, b, 0, true), Diff.Compute(a, b, 0, false), "diff_main: Single line-mode.");
        }
Esempio n. 2
0
        public void SingleLineModeSpeedup()
        {
            var a = "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890";
            var b = "abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghij";

            Assert.Equal(Diff.Compute(a, b, 0, true), Diff.Compute(a, b, 0, false));
        }
Esempio n. 3
0
        public void Timeout()
        {
            var a =
                "`Twas brillig, and the slithy toves\nDid gyre and gimble in the wabe:\nAll mimsy were the borogoves,\nAnd the mome raths outgrabe.\n";
            var b =
                "I am the very model of a modern major general,\nI've information vegetable, animal, and mineral,\nI know the kings of England, and I quote the fights historical,\nFrom Marathon to Waterloo, in order categorical.\n";

            // Increase the text lengths by 1024 times to ensure a timeout.
            for (var x = 0; x < 10; x++)
            {
                a = a + a;
                b = b + b;
            }
            var timeout = TimeSpan.FromMilliseconds(100);

            using (var cts = new CancellationTokenSource(timeout))
            {
                var stopWatch = Stopwatch.StartNew();
                Diff.Compute(a, b, false, cts.Token, false);
                var elapsed = stopWatch.Elapsed;
                // assert that elapsed time is between timeout and 2*timeout (be forgiving)
                Assert.IsTrue(timeout <= elapsed.Add(TimeSpan.FromMilliseconds(1)), string.Format("Expected timeout < elapsed. Elapsed = {0}, Timeout = {1}.", elapsed, timeout));
                Assert.IsTrue(TimeSpan.FromTicks(2 * timeout.Ticks) > elapsed);
            }
        }
Esempio n. 4
0
        public void TestPerformance()
        {
            var         oldText = File.ReadAllText("left.txt");
            var         newText = File.ReadAllText("right.txt");
            List <Diff> diff;

            diff = Diff.Compute(oldText, newText, 5);
            diff.CleanupEfficiency();
            diff.CleanupSemantic();
            var sw = Stopwatch.StartNew();

            for (int i = 0; i < 1; i++)
            {
                diff = Diff.Compute(oldText, newText, 5);
                diff.CleanupEfficiency();
                diff.CleanupSemantic();
            }
            //var patched = Patch.FromDiffs(diff).Apply(oldText);
            var elapsed = sw.ElapsedMilliseconds;

            Console.WriteLine(elapsed);
            //var fileName = Path.ChangeExtension(Path.GetTempFileName(), "html");
            //File.WriteAllText(fileName, diff.PrettyHtml());
            //Process.Start(fileName);
        }
Esempio n. 5
0
        public void Equality()
        {
            var expected1 = new List <Diff> {
                Equal("abc")
            };

            CollectionAssert.AreEqual(expected1, Diff.Compute("abc", "abc", 1f, false), "diff_main: Equality.");
        }
Esempio n. 6
0
        public void CorrectDiffHtmlDocOutput_HtmlInput()
        {
            var diffs = Diff.Compute(expectedHtml, actualHtml);

            diffs.Cleanup();

            Approvals.Verify(new ApprovalTextWriter(diffs.ToHtmlDocument(), "html"));
        }
Esempio n. 7
0
        public void CorrectDiffHtmlEncodedTextOutput_HtmlInput()
        {
            var diffs = Diff.Compute(expectedHtml, actualHtml);

            diffs.Cleanup();

            Approvals.Verify(new ApprovalTextWriter(diffs.ToReadableText(true)));
        }
Esempio n. 8
0
        public void CorrectDiffHtmlOutput_TextInput()
        {
            var diffs = Diff.Compute(expected, actual);

            diffs.Cleanup();

            Approvals.Verify(new ApprovalTextWriter(diffs.ToHtml(), "html"));
        }
Esempio n. 9
0
        public void DiffWithOverlap2()
        {
            var expected10 = new List <Diff> {
                Insert("xaxcx"), Equal("abc"), Delete("y")
            };

            CollectionAssert.AreEqual(expected10, Diff.Compute("abcy", "xaxcxabc", 0, false), "diff_main: Overlap #2.");
        }
Esempio n. 10
0
        public void SimpleInsert()
        {
            var expected2 = new List <Diff> {
                Equal("ab"), Insert("123"), Equal("c")
            };

            CollectionAssert.AreEqual(expected2, Diff.Compute("abc", "ab123c", 1f, false), "diff_main: Simple insertion.");
        }
Esempio n. 11
0
        public void SimpleDelete()
        {
            var expected3 = new List <Diff> {
                Equal("a"), Delete("123"), Equal("bc")
            };

            CollectionAssert.AreEqual(expected3, Diff.Compute("a123bc", "abc", 1f, false), "diff_main: Simple deletion.");
        }
Esempio n. 12
0
        public void SimpleDelete()
        {
            var expected3 = new List <Diff> {
                Equal("a"), Delete("123"), Equal("bc")
            };

            Assert.Equal(expected3, Diff.Compute("a123bc", "abc"));
        }
Esempio n. 13
0
        public void SimpleInsert()
        {
            var expected2 = new List <Diff> {
                Equal("ab"), Insert("123"), Equal("c")
            };

            Assert.Equal(expected2, Diff.Compute("abc", "ab123c"));
        }
Esempio n. 14
0
        public void DiffBetweenTwoEqualStrings_IsOneEquality()
        {
            var expected1 = new List <Diff> {
                Equal("abc")
            };

            Assert.Equal(expected1, Diff.Compute("abc", "abc"));
        }
Esempio n. 15
0
        public void DiffWithOverlap2()
        {
            var expected10 = new List <Diff> {
                Insert("xaxcx"), Equal("abc"), Delete("y")
            };

            Assert.Equal(expected10, Diff.Compute("abcy", "xaxcxabc", 0, false));
        }
Esempio n. 16
0
        public void CorrectDiffRawTextOutput_TextInput()
        {
            var diffs = Diff.Compute(expected, actual);

            diffs.Cleanup();

            Approvals.Verify(new ApprovalTextWriter(diffs.ToText()));
        }
Esempio n. 17
0
        public void OverlapLineMode()
        {
            var a             = "1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n1234567890\n";
            var b             = "abcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n1234567890\n1234567890\n1234567890\nabcdefghij\n";
            var textsLinemode = RebuildTexts(Diff.Compute(a, b, 0, true));
            var textsTextmode = RebuildTexts(Diff.Compute(a, b, 0, false));

            Assert.AreEqual(textsTextmode, textsLinemode, "diff_main: Overlap line-mode.");
        }
Esempio n. 18
0
        public void SimpleDeleteInsert_NoTimeout()
        {
            // Perform a real diff.
            // Switch off the timeout.
            var expected6 = new List <Diff> {
                Delete("a"), Insert("b")
            };

            Assert.Equal(expected6, Diff.Compute("a", "b", 0, false));
        }
Esempio n. 19
0
        public void SimpleDeleteInsert_NoTimeout()
        {
            // Perform a real diff.
            // Switch off the timeout.
            var expected6 = new List <Diff> {
                Delete("a"), Insert("b")
            };

            CollectionAssert.AreEqual(expected6, Diff.Compute("a", "b", 0, false), "diff_main: Simple case #1.");
        }
Esempio n. 20
0
        public void Compute_WithHalfMatch()
        {
            var a          = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, \r\nsed diam nonummy nibh euismod tincidunt ut laoreet dolore magna \r\naliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci \r\ntation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. \r\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie \r\nconsequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan\r\net iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore \r\nte feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil \r\nimperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; \r\nest usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores \r\nlegere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur\r\nmutationem consuetudium lectorum. Mirum est notare quam littera gothica, quam nunc putamus \r\nparum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta \r\ndecima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.";
            var b          = "Lorem ipsum dolor sit amet, adipiscing elit, \r\nsed diam nonummy nibh euismod tincidunt ut laoreet dolore vobiscum magna \r\naliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci \r\ntation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. \r\nDuis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie \r\nconsequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan\r\net iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore \r\nte feugait nulla facilisi. Nam liber tempor cum soluta nobis eleifend option congue nihil \r\nimperdiet doming id quod mazim placerat facer possim assum. Typi non habent claritatem insitam; \r\nest usus legentis in iis qui facit eorum claritatem. Investigationes demonstraverunt lectores \r\nlegere me lius quod ii legunt saepius. Claritas est etiam processus dynamicus, qui sequitur\r\nmutationem consuetudium lectorum. Mirum est notare quam littera gothica, putamus \r\nparum claram, anteposuerit litterarum formas humanitatis per seacula quarta decima et quinta \r\ndecima. Eodem modo typi, qui nunc nobis videntur parum clari, fiant sollemnes in futurum.";
            var collection = Diff.Compute(a, b, 5);
            var p          = Patch.FromDiffs(collection);
            var result     = p.Apply(a);

            Assert.AreEqual(b, result.Item1);
        }
Esempio n. 21
0
        public void CorrectPatchHtmlEncodedTextOutput_HtmlInput()
        {
            var diffs = Diff.Compute(expectedHtml, actualHtml);

            diffs.Cleanup();

            var patches = Patch.FromDiffs(diffs);

            Approvals.Verify(new ApprovalTextWriter(patches.ToReadableText(true)));
            Assert.AreEqual(6, patches.Count);
        }
Esempio n. 22
0
        public void CorrectPatchHtmlDocOutput_TextInput()
        {
            var diffs = Diff.Compute(expected, actual);

            diffs.Cleanup();

            var patches = Patch.FromDiffs(diffs);

            Approvals.Verify(new ApprovalTextWriter(patches.ToHtmlDocument(), "html"));
            Assert.AreEqual(6, patches.Count);
        }
        public void Compute_FromTextAndDiffs_Succeeds()
        {
            var text1         = "The quick brown fox jumps over the lazy dog.";
            var text2         = "That quick brown fox jumped over a lazy dog.";
            var diffs         = Diff.Compute(text1, text2, 0, false);
            var expectedPatch =
                "@@ -1,11 +1,12 @@\n Th\n-e\n+at\n  quick b\n@@ -22,18 +22,17 @@\n jump\n-s\n+ed\n  over \n-the\n+a\n  laz\n";
            var patches = Patch.Compute(text1, diffs).ToList();

            Assert.Equal(expectedPatch, patches.ToText());
        }
Esempio n. 24
0
        public IActionResult Get(int id)
        {
            var entity = _activityLogService.GetById(id);

            foreach (var ali in entity.ActivityLogItems)
            {
                var diffs = Diff.Compute(ali.OldValue, ali.NewValue);
                ali.Diff = diffs.ToHtmlDocument();
            }

            return(Ok(entity));
        }
Esempio n. 25
0
        public void SpecialCharacters_NoTimeout()
        {
            var expected8 = new List <Diff>
            {
                Delete("a"),
                Insert("\u0680"),
                Equal("x"),
                Delete("\t"),
                Insert(new string(new char[] { (char)0 }))
            };

            Assert.Equal(expected8, Diff.Compute("ax\t", "\u0680x" + (char)0, 0, false));
        }
Esempio n. 26
0
        public void TwoDeletes()
        {
            var expected5 = new List <Diff>
            {
                Equal("a"),
                Delete("123"),
                Equal("b"),
                Delete("456"),
                Equal("c")
            };

            CollectionAssert.AreEqual(expected5, Diff.Compute("a123b456c", "abc", 1f, false), "diff_main: Two deletions.");
        }
Esempio n. 27
0
        public void TwoInsertions()
        {
            var expected4 = new List <Diff>
            {
                Equal("a"),
                Insert("123"),
                Equal("b"),
                Insert("456"),
                Equal("c")
            };

            CollectionAssert.AreEqual(expected4, Diff.Compute("abc", "a123b456c", 1f, false), "diff_main: Two insertions.");
        }
Esempio n. 28
0
        public void TwoInsertions()
        {
            var expected4 = new List <Diff>
            {
                Equal("a"),
                Insert("123"),
                Equal("b"),
                Insert("456"),
                Equal("c")
            };

            Assert.Equal(expected4, Diff.Compute("abc", "a123b456c"));
        }
Esempio n. 29
0
        public void TwoDeletes()
        {
            var expected5 = new List <Diff>
            {
                Equal("a"),
                Delete("123"),
                Equal("b"),
                Delete("456"),
                Equal("c")
            };

            Assert.Equal(expected5, Diff.Compute("a123b456c", "abc", 1f, false));
        }
Esempio n. 30
0
        public void SentenceChange1()
        {
            var expected7 = new List <Diff>
            {
                Delete("Apple"),
                Insert("Banana"),
                Equal("s are a"),
                Insert("lso"),
                Equal(" fruit.")
            };

            Assert.Equal(expected7, Diff.Compute("Apples are a fruit.", "Bananas are also fruit.", 0, false));
        }