public void ComplexDag() { GraphNode shirt = new TestGraphNode("shirt"); GraphNode tie = new TestGraphNode("tie"); GraphNode jacket = new TestGraphNode("jacket"); GraphNode belt = new TestGraphNode("belt"); GraphNode watch = new TestGraphNode("watch"); GraphNode undershorts = new TestGraphNode("undershorts"); GraphNode pants = new TestGraphNode("pants"); GraphNode shoes = new TestGraphNode("shoes"); GraphNode socks = new TestGraphNode("socks"); shirt.AddDependent(belt); shirt.AddDependent(tie); tie.AddDependent(jacket); pants.AddDependent(belt); pants.AddDependent(shoes); undershorts.AddDependent(pants); undershorts.AddDependent(shoes); socks.AddDependent(shoes); belt.AddDependent(jacket); IVertex[] nodes = TopologicalSortAlgo.Sort( new GraphNode[] { shirt, tie, jacket, belt, watch, undershorts, pants, shoes, socks }); Assert.AreSame(socks, nodes[0]); Assert.AreSame(undershorts, nodes[1]); Assert.AreSame(pants, nodes[2]); Assert.AreSame(shoes, nodes[3]); Assert.AreSame(watch, nodes[4]); Assert.AreSame(shirt, nodes[5]); Assert.AreSame(tie, nodes[6]); Assert.AreSame(belt, nodes[7]); Assert.AreSame(jacket, nodes[8]); }
public void TopologicalSortSimple() { GraphNode alone = new TestGraphNode("alone"); GraphNode first = new TestGraphNode("first"); GraphNode second = new TestGraphNode("second"); GraphNode third = new TestGraphNode("third"); first.AddDependent(second); second.AddDependent(third); IVertex[] nodes = TopologicalSortAlgo.Sort(new GraphNode[] { alone, second, first, third }); Assert.AreSame(first, nodes[0]); Assert.AreSame(second, nodes[1]); Assert.AreSame(third, nodes[2]); Assert.AreSame(alone, nodes[3]); }