public void BiggerSituation() { SimpleGraph graph = new SimpleGraph(); Vertex A = graph.CreateVertex( "A" ); Vertex B = graph.CreateVertex( "B" ); Vertex C = graph.CreateVertex( "C" ); Vertex D = graph.CreateVertex( "D" ); Vertex E = graph.CreateVertex( "E" ); Vertex F = graph.CreateVertex( "F" ); Vertex G = graph.CreateVertex( "G" ); graph.CreateEdge( B, C ); graph.CreateEdge( A, C ); graph.CreateEdge( C, E ); graph.CreateEdge( B, E ); graph.CreateEdge( A, E ); graph.CreateEdge( E, F ); graph.CreateEdge( F, G ); Vertex[] vertices = TopologicalSort.Perform( graph ); Vertex[] expected = new Vertex[] { A, B, D, C, E, F, G }; AssertNotNull( vertices ); AssertEquals( expected, vertices ); }
public void SimpleUse() { SimpleGraph graph = new SimpleGraph(); Vertex A = graph.CreateVertex( "A" ); Vertex B = graph.CreateVertex( "B" ); Vertex C = graph.CreateVertex( "C" ); Vertex D = graph.CreateVertex( "D" ); Vertex E = graph.CreateVertex( "E" ); graph.CreateEdge( A, B ); graph.CreateEdge( A, C ); graph.CreateEdge( C, D ); Vertex[] vertices = TopologicalSort.Perform( graph ); Vertex[] expected = new Vertex[] { A, E, B, C, D }; AssertNotNull( vertices ); AssertEquals( expected, vertices ); }
public void AddEdge() { SimpleGraph graph = new SimpleGraph(); Vertex A = graph.CreateVertex( "A" ); Vertex B = graph.CreateVertex( "B" ); Edge edge = graph.CreateEdge( A, B ); AssertNotNull( edge ); AssertEquals( A, edge.Source ); AssertEquals( B, edge.Target ); AssertEquals( 1, A.Successors.Length ); AssertEquals( 0, B.Successors.Length ); }
protected virtual SimpleGraph BuildHandlerGraph() { SimpleGraph graph = new SimpleGraph(); foreach( IHandler handler in m_key2Handler.Values ) { graph.CreateVertex( handler.ComponentModel.Service ); } foreach( IHandler handler in m_key2Handler.Values ) { Type service = handler.ComponentModel.Service; IDependencyModel[] dependencies = handler.ComponentModel.Dependencies; foreach(IDependencyModel dependency in dependencies) { graph.CreateEdge( graph[service], graph[dependency.Service] ); } } return graph; }