1 25 41 package org.jgrapht.traverse; 42 43 import org.jgrapht.*; 44 import org.jgrapht.event.*; 45 import org.jgrapht.graph.*; 46 47 48 55 public abstract class AbstractGraphIteratorTest 56 extends EnhancedTestCase 57 { 58 59 61 StringBuffer result; 62 63 65 68 public void testDirectedGraph() 69 { 70 result = new StringBuffer (); 71 72 DirectedGraph<String , DefaultEdge> graph = createDirectedGraph(); 73 74 AbstractGraphIterator<String , DefaultEdge> iterator = 75 createIterator(graph, "1"); 76 iterator.addTraversalListener(new MyTraversalListener()); 77 78 while (iterator.hasNext()) { 79 result.append(iterator.next()); 80 81 if (iterator.hasNext()) { 82 result.append(','); 83 } 84 } 85 86 assertEquals(getExpectedStr2(), result.toString()); 87 } 88 89 abstract String getExpectedStr1(); 90 91 abstract String getExpectedStr2(); 92 93 DirectedGraph<String , DefaultEdge> createDirectedGraph() 94 { 95 DirectedGraph<String , DefaultEdge> graph = 96 new DefaultDirectedWeightedGraph<String , DefaultEdge>( 97 DefaultWeightedEdge.class); 98 99 String v1 = "1"; 101 String v2 = "2"; 102 String v3 = "3"; 103 String v4 = "4"; 104 String v5 = "5"; 105 String v6 = "6"; 106 String v7 = "7"; 107 String v8 = "8"; 108 String v9 = "9"; 109 110 graph.addVertex(v1); 111 graph.addVertex(v2); 112 graph.addVertex("3"); 113 graph.addVertex("4"); 114 graph.addVertex("5"); 115 graph.addVertex("6"); 116 graph.addVertex("7"); 117 graph.addVertex("8"); 118 graph.addVertex("9"); 119 120 graph.addVertex("orphan"); 121 122 graph.addEdge(v1, v2); 126 Graphs.addEdge(graph, v1, v3, 100); 127 Graphs.addEdge(graph, v2, v4, 1000); 128 graph.addEdge(v3, v5); 129 Graphs.addEdge(graph, v3, v6, 100); 130 graph.addEdge(v5, v6); 131 Graphs.addEdge(graph, v5, v7, 200); 132 graph.addEdge(v6, v1); 133 Graphs.addEdge(graph, v7, v8, 100); 134 graph.addEdge(v7, v9); 135 graph.addEdge(v8, v2); 136 graph.addEdge(v9, v4); 137 138 return graph; 139 } 140 141 abstract AbstractGraphIterator<String , DefaultEdge> createIterator( 142 DirectedGraph<String , DefaultEdge> g, 143 String startVertex); 144 145 147 152 private class MyTraversalListener 153 implements TraversalListener<String , DefaultEdge> 154 { 155 private int componentNumber = 0; 156 private int numComponentVertices = 0; 157 158 161 public void connectedComponentFinished( 162 ConnectedComponentTraversalEvent e) 163 { 164 switch (componentNumber) { 165 case 1: 166 assertEquals(getExpectedStr1(), result.toString()); 167 assertEquals(9, numComponentVertices); 168 169 break; 170 171 case 2: 172 assertEquals(getExpectedStr2(), result.toString()); 173 assertEquals(1, numComponentVertices); 174 175 break; 176 177 default: 178 assertFalse(); 179 180 break; 181 } 182 183 numComponentVertices = 0; 184 } 185 186 189 public void connectedComponentStarted( 190 ConnectedComponentTraversalEvent e) 191 { 192 componentNumber++; 193 } 194 195 198 public void edgeTraversed(EdgeTraversalEvent<String , DefaultEdge> e) 199 { 200 } 202 203 206 public void vertexTraversed(VertexTraversalEvent<String > e) 207 { 208 numComponentVertices++; 209 } 210 } 211 } 212
| Popular Tags
|