public void TestGetRoots() { INode[] nodes = EntityFactory.CreateDummyNodes(7); IDirectedGraph <INode> directedGraph = CreateBinaryDirectedGraph(nodes); INodes roots = directedGraph.GetRootNodes(); Assert.True(roots != null, "There should be roots in the graph."); Assert.True(roots.Contains(nodes[0]), $"Leafs do not contain node {nodes[0]}."); Assert.True(roots.Count() == 1, "Roots must contain exact one node."); }
public void TestGetPredecessorNodesRecursive() { INode[] nodes = EntityFactory.CreateDummyNodes(6); IDirectedGraph <INode> directedGraph = CreateBinaryDirectedGraph(nodes); foreach (var node in nodes) { INodes predecessors = directedGraph.GetPredecessorNodes(node); if (predecessors == null) { continue; } INodes predecessorsRecursive = directedGraph.GetPredecessorNodesRecursive(node); Assert.True(predecessorsRecursive.Contains(node) == false); foreach (var predecessor in predecessors) { Assert.True(predecessorsRecursive.Contains(predecessor)); } } }
public void TestGetLeafs() { INode[] nodes = EntityFactory.CreateDummyNodes(7); IDirectedGraph <INode> directedGraph = CreateBinaryDirectedGraph(nodes); INodes leafs = directedGraph.GetLeafNodes(); Assert.True(leafs != null, "There should be leafs in the graph."); for (int i = 3; i < 7; i++) { Assert.True(leafs.Contains(nodes[i]), $"Leafs do not contain node {nodes[i]}."); } }
public void TestGetPredecessorNodes() { INode[] nodes = EntityFactory.CreateDummyNodes(7); IDirectedGraph <INode> directedGraph = CreateBinaryDirectedGraph(nodes); INodes roots = directedGraph.GetRootNodes(); foreach (var node in nodes) { INodes predecessors = directedGraph.GetPredecessorNodes(node); bool isRoot = roots.Contains(node); if (isRoot) { Assert.True(predecessors == null, "A root cannot have predecessors."); } else { Assert.True(predecessors != null, "A non-root MUST have predecessors."); } } }
public void TestGetSuccessorNodes() { INode[] nodes = EntityFactory.CreateDummyNodes(7); IDirectedGraph <INode> directedGraph = CreateBinaryDirectedGraph(nodes); INodes leafs = directedGraph.GetLeafNodes(); foreach (var node in nodes) { INodes successors = directedGraph.GetSuccessorNodes(node); bool isLeaf = leafs.Contains(node); if (isLeaf) { Assert.True(successors == null, "A leaf cannot have successors."); } else { Assert.True(successors != null, "A non-leaf MUST have successors."); } } }