1 25 40 package org.jgrapht.graph; 41 42 import java.util.*; 43 44 import org.jgrapht.*; 45 46 47 53 public class DefaultDirectedGraphTest 54 extends EnhancedTestCase 55 { 56 57 59 private String v1 = "v1"; 60 private String v2 = "v2"; 61 private String v3 = "v3"; 62 63 65 68 public void testEdgeSetFactory() 69 { 70 DirectedMultigraph<String , DefaultEdge> g = 71 new DirectedMultigraph<String , DefaultEdge>( 72 DefaultEdge.class); 73 g.setEdgeSetFactory(new LinkedHashSetFactory<String , DefaultEdge>()); 74 initMultiTriangleWithMultiLoop(g); 75 } 76 77 80 public void testEdgeOrderDeterminism() 81 { 82 DirectedGraph<String , DefaultEdge> g = 83 new DirectedMultigraph<String , DefaultEdge>( 84 DefaultEdge.class); 85 g.addVertex(v1); 86 g.addVertex(v2); 87 g.addVertex(v3); 88 89 DefaultEdge e1 = g.addEdge(v1, v2); 90 DefaultEdge e2 = g.addEdge(v2, v3); 91 DefaultEdge e3 = g.addEdge(v3, v1); 92 93 Iterator<DefaultEdge> iter = g.edgeSet().iterator(); 94 assertEquals(e1, iter.next()); 95 assertEquals(e2, iter.next()); 96 assertEquals(e3, iter.next()); 97 98 assertTrue(Graphs.testIncidence(g, e1, v1)); 100 assertTrue(Graphs.testIncidence(g, e1, v2)); 101 assertFalse(Graphs.testIncidence(g, e1, v3)); 102 assertEquals(v2, Graphs.getOppositeVertex(g, e1, v1)); 103 assertEquals(v1, Graphs.getOppositeVertex(g, e1, v2)); 104 105 assertEquals( 106 "([v1, v2, v3], [(v1,v2), (v2,v3), (v3,v1)])", 107 g.toString()); 108 } 109 110 113 public void testEdgesOf() 114 { 115 DirectedGraph<String , DefaultEdge> g = 116 createMultiTriangleWithMultiLoop(); 117 118 assertEquals(3, g.edgesOf(v1).size()); 119 assertEquals(2, g.edgesOf(v2).size()); 120 } 121 122 125 public void testGetAllEdges() 126 { 127 DirectedGraph<String , DefaultEdge> g = 128 createMultiTriangleWithMultiLoop(); 129 130 Set<DefaultEdge> loops = g.getAllEdges(v1, v1); 131 assertEquals(1, loops.size()); 132 } 133 134 137 public void testInDegreeOf() 138 { 139 DirectedGraph<String , DefaultEdge> g = 140 createMultiTriangleWithMultiLoop(); 141 142 assertEquals(2, g.inDegreeOf(v1)); 143 assertEquals(1, g.inDegreeOf(v2)); 144 } 145 146 149 public void testOutDegreeOf() 150 { 151 DirectedGraph<String , DefaultEdge> g = 152 createMultiTriangleWithMultiLoop(); 153 154 assertEquals(2, g.outDegreeOf(v1)); 155 assertEquals(1, g.outDegreeOf(v2)); 156 } 157 158 161 public void testVertexOrderDeterminism() 162 { 163 DirectedGraph<String , DefaultEdge> g = 164 createMultiTriangleWithMultiLoop(); 165 Iterator<String > iter = g.vertexSet().iterator(); 166 assertEquals(v1, iter.next()); 167 assertEquals(v2, iter.next()); 168 assertEquals(v3, iter.next()); 169 } 170 171 private DirectedGraph<String , DefaultEdge> 172 createMultiTriangleWithMultiLoop() 173 { 174 DirectedGraph<String , DefaultEdge> g = 175 new DirectedMultigraph<String , DefaultEdge>( 176 DefaultEdge.class); 177 initMultiTriangleWithMultiLoop(g); 178 179 return g; 180 } 181 182 private void initMultiTriangleWithMultiLoop( 183 DirectedGraph<String , DefaultEdge> g) 184 { 185 g.addVertex(v1); 186 g.addVertex(v2); 187 g.addVertex(v3); 188 189 g.addEdge(v1, v1); 190 g.addEdge(v1, v2); 191 g.addEdge(v2, v3); 192 g.addEdge(v3, v1); 193 } 194 195 197 private static class LinkedHashSetFactory<V, E> 198 implements EdgeSetFactory<V, E> 199 { 200 207 public Set<E> createEdgeSet(V vertex) 208 { 209 return new LinkedHashSet<E>(); 210 } 211 } 212 } 213 | Popular Tags |