public void FindLongPaths_WhenGraphHasNoLinks_ShouldReturnExpected() { var graph = BuildEmptyGraph(); var result = DiGraphHelper.FindLongPaths(graph); result.Should().BeEmpty(); }
public void FindLongPaths_ShouldReturnExpected() { var graph = BuildGraph(); var result = DiGraphHelper.FindLongPaths(graph); result.Should().BeEquivalentTo((new DiNodePair("a", "c"))); }
public void FindLongPaths_ShouldFindAllCombinations() { // This graph has two paths between a and c var graph = new Dgml.DirectedGraph { Nodes = new Dgml.DirectedGraphNode[] { BuildNode("a"), BuildNode("b"), BuildNode("c"), BuildNode("d"), }, Links = new Dgml.DirectedGraphLink[] { BuildLink("a", "b"), BuildLink("b", "c"), BuildLink("c", "d"), } }; var result = DiGraphHelper.FindLongPaths(graph); result.Should().BeEquivalentTo( new DiNodePair("a", "c"), new DiNodePair("b", "d"), new DiNodePair("a", "d") ); }