public void Test() { var graph1 = new DirectedWeightedGraph(false); for (int i = 'a'; i <= 'e'; i++) { graph1.AddVertex(Convert.ToString(Convert.ToChar(i))); } graph1.AddEdge("a", "b", 1); graph1.AddEdge("b", "a", 2); graph1.AddEdge("c", "a", 3); graph1.AddEdge("c", "b", 600); graph1.AddEdge("c", "d", 0); graph1.AddEdge("d", "c", 7); graph1.AddEdge("d", "b", 7); var list = new List <List <Vertex> >(); var subList1 = new List <Vertex>(); var subList2 = new List <Vertex>(); var subList3 = new List <Vertex>(); subList1.Add(graph1.GetVertex("b")); subList1.Add(graph1.GetVertex("a")); subList2.Add(graph1.GetVertex("d")); subList2.Add(graph1.GetVertex("c")); subList3.Add(graph1.GetVertex("e")); list.Add(subList1); list.Add(subList2); list.Add(subList3); var testList = StronglyConnectedComponents <DirectedWeightedGraph> .GetComponents(graph1); Assert.AreEqual(list.Count, testList.Count); for (int subList = 0; subList <= 1; subList++) { for (int vertex = 0; vertex <= 1; vertex++) { Assert.AreEqual(list[subList][vertex], testList[subList][vertex]); } } Assert.AreEqual(list[2][0], testList[2][0]); }