public async Task WhenVisitorVisitsOneCommit_OneDiffIsReturned() { var commit = Fakes.Commit().Object; var visitor = new Mock <Core.Visitor>(); visitor.Setup(v => v.Walk(commit)) .Raises(v => v.Visited += null, visitor.Object, commit); var listener = new Mock <IDiffListener>(); listener.Setup(l => l.OnCommitVisited(It.IsAny <Core.Visitor>(), It.IsAny <Commit>())) .Callback(() => listener.SetupGet(l => l.Diffs) .Returns(new List <(Commit, TreeEntryChanges)>() { (commit, new Mock <TreeEntryChanges>().Object) }) ); var walker = new DiffCollector(visitor.Object, listener.Object); var result = await walker.Walk(commit); Assert.Equal(commit.Sha, result.First().Commit.Sha); }
public void ParentsShareAParent_OnlyVisitGrandParentOnce() { var grandParent = Fakes.Commit(); var grandParents = new List <Commit>() { grandParent.Object }; var commit = Fakes.Commit() .WithParents(new List <Commit>() { Fakes.Commit().WithParents(grandParents).Object, Fakes.Commit().WithParents(grandParents).Object }); var visitor = new CommitVisitor(); var visitedCount = 0; var grandParentVisitedCount = 0; visitor.Visited += (sender, visited) => { visitedCount++; if (visited.Sha == grandParent.Object.Sha) { grandParentVisitedCount++; } }; visitor.Walk(commit.Object); Assert.Equal(4, visitedCount); Assert.Equal(1, grandParentVisitedCount); }
public void CanCallWalkMultipleTimes() { var grandParent = Fakes.Commit(); var grandParents = new List <Commit>() { grandParent.Object }; var commit = Fakes.Commit() .WithParents(new List <Commit>() { Fakes.Commit().WithParents(grandParents).Object, Fakes.Commit().WithParents(grandParents).Object }); var visitor = new CommitVisitor(); var visitedCount = 0; var grandParentVisitedCount = 0; visitor.Visited += (sender, visited) => { visitedCount++; if (visited.Sha == grandParent.Object.Sha) { grandParentVisitedCount++; } }; visitor.Walk(commit.Object); visitor.Walk(commit.Object); Assert.Equal(8, visitedCount); Assert.Equal(2, grandParentVisitedCount); }
public void OneEntryIsCounted() { var diffs = new List <CommitDiff>() { new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/file").Object), }; Assert.Equal(1, CountFileChanges(diffs).Single().Count); }
public void TwoEntriesForSameFileAreCounted() { var diffs = new List <CommitDiff>() { new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/file").Object), new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/file").Object), }; Assert.Equal(2, CountFileChanges(diffs).Single().Count); }
public void TwoEntriesForTwoDifferentFilesAreCountedSeparately() { var diffs = new List <CommitDiff>() { new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/fileA").Object), new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/fileB").Object), new(Fakes.Commit().Object, Fakes.TreeEntryChanges("path/to/fileB").Object), }; Assert.Equal(1, CountFileChanges(diffs).Single(d => d.Path == "path/to/fileA").Count); Assert.Equal(2, CountFileChanges(diffs).Single(d => d.Path == "path/to/fileB").Count); }
public void NoParents_OnlyVisitsCurrentCommit() { var commit = Fakes.Commit(); var visitor = new CommitVisitor(); var visitedCount = 0; visitor.Visited += (sender, visited) => visitedCount++; visitor.Walk(commit.Object); Assert.Equal(1, visitedCount); }
public async Task WhenDateFilterIsPresent_DisplayFilteredResults() { var diffs = Fakes.Diffs(Fakes.Commit().WithAuthor(DateTimeOffset.Parse("2017-06-21 13:30 -4:00"))); _asyncVisitor.Setup(v => v.Walk(It.IsAny <Commit>())) .Returns(Task.FromResult(diffs)); var result = await _controller.RunAnalysis(new Options() { DateFilter = DateTime.Parse("2017-07-21") }); var pathCounts = Analysis.CountFileChanges(Enumerable.Empty <CommitDiff>()); _view.Verify(v => v.DisplayPathCounts(pathCounts)); Assert.Equal(Result.Success, result); }
public async Task WhenVisitorVisitsOneCommit_OneDiffIsReturned() { var commit = Fakes.Commit().Object; var visitor = new Mock <Core.Visitor>(); visitor.Setup(v => v.Walk(commit)) .Raises(v => v.Visited += null, visitor.Object, commit); var listener = new Mock <IDiffListener>(); listener.Setup(l => l.OnCommitVisited(It.IsAny <Core.Visitor>(), It.IsAny <Commit>())) .Callback(() => listener.SetupGet(l => l.Diffs) .Returns(new List <CommitDiff>() { new(commit, new Mock <TreeEntryChanges>().Object) })
public void OneParent_VisitsCurrentCommitAndParent() { var commit = Fakes.Commit() .WithParents(new List <Commit>() { Fakes.Commit().Object }); var visitor = new CommitVisitor(); var visitedCount = 0; visitor.Visited += (sender, visited) => visitedCount++; visitor.Walk(commit.Object); Assert.Equal(2, visitedCount); }
public void RenamedFileHasHistory() { var fileA = Fakes.TreeEntryChanges("fileA"); var fileB = Fakes.TreeEntryChanges("fileB"); fileB.SetupGet(d => d.Status).Returns(ChangeKind.Renamed); fileB.SetupGet(d => d.OldPath).Returns(fileA.Object.Path); var diffs = new List <CommitDiff>() { new(Fakes.Commit().Object, fileA.Object), new(Fakes.Commit().Object, fileB.Object) }; var pathCounts = CountFileChanges(diffs); Assert.Equal("fileB", pathCounts.Single().Path); Assert.Equal(2, pathCounts.Single().Count); }
public void WhenCommitIsVisited_DiffWithItsParentIsStored() { //arrange var treeChangeA = new Mock <TreeEntryChanges>(); treeChangeA.Setup(t => t.Path).Returns("a"); var treeChangeB = new Mock <TreeEntryChanges>(); treeChangeB.Setup(t => t.Path).Returns("b"); var treeEntryChanges = new List <TreeEntryChanges>() { treeChangeA.Object, treeChangeB.Object }; var expected = Fakes.TreeChanges(treeEntryChanges); var diff = new Mock <Diff>(); diff.Setup(d => d.Compare <TreeChanges>(It.IsAny <Tree>(), It.IsAny <Tree>())) .Returns(expected.Object); var repo = new Mock <IRepository>(); repo.Setup(r => r.Diff) .Returns(diff.Object); var commit = Fakes.Commit().WithParents().Object; //act var listener = new DiffListener(repo.Object); listener.OnCommitVisited(new CommitVisitor(), commit); var actual = listener.Diffs .Select(d => d.Diff) .OrderBy(change => change.Path) .ToList(); //assert Assert.Equal(treeEntryChanges, actual); Assert.Equal(commit, listener.Diffs.Select(d => d.Commit).First()); }