public void TestThatPathsCanBeFoundWhenThereIsACycle() { var root = new SimpleNode("root"); var child = new SimpleNode("child"); var target = new SimpleNode("target"); var back = new SimpleNode("back"); root.AddChild(child); child.AddChild(target); child.AddChild(back); back.AddChild(root); var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root); var paths = graph.FindPaths(root, target); var result = string.Join("|", paths.Select(path => string.Join(",", path))); Assert.AreEqual("root,child,target|root,child,back,root,child,target", result); }
public void ThatThatThereIsSinglePathBetweenNodeAndItself() { var root = new SimpleNode("root"); var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root); var paths = graph.FindPaths(root, root); Assert.AreEqual("root", DescribePaths(paths)); }
public void TestThatTwoPathsAreFoundInDiamondGraph() { var root = new SimpleNode("root"); var child1 = new SimpleNode("child1"); var child2 = new SimpleNode("child2"); var end = new SimpleNode("end"); root.AddChild(child1); root.AddChild(child2); child1.AddChild(end); child2.AddChild(end); var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root); var paths = graph.FindPaths(root, end); Assert.AreEqual("root child1 end\nroot child2 end", DescribePaths(paths)); }
public void ThatThatPathBetweenNodeAndChildContainsNodeAndChild() { var root = new SimpleNode("root"); var child = new SimpleNode("child"); root.AddChild(child); var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root); var paths = graph.FindPaths(root, child); Assert.AreEqual("root child", DescribePaths(paths)); }
public void TestThatTwoPathsAreFoundForTwoEdgesBetweenVertices() { var root = new SimpleNode("root"); var child = new SimpleNode("child"); root.AddChild(child); root.AddChild(child); var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root); var paths = graph.FindPaths(root, child); Assert.AreEqual("root child\nroot child", DescribePaths(paths)); }