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 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 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); }