1 25 41 package org.jgrapht.generate; 42 43 import java.util.*; 44 45 import junit.framework.*; 46 47 import org.jgrapht.*; 48 import org.jgrapht.graph.*; 49 50 51 57 public class GraphGeneratorTest 58 extends TestCase 59 { 60 61 63 private static final int SIZE = 10; 64 65 67 private VertexFactory<Object > vertexFactory = 68 new VertexFactory<Object >() { 69 private int i; 70 71 public Object createVertex() 72 { 73 return new Integer (++i); 74 } 75 }; 76 77 78 80 83 public void testEmptyGraphGenerator() 84 { 85 GraphGenerator<Object , DefaultEdge, Object > gen = 86 new EmptyGraphGenerator<Object , DefaultEdge>(SIZE); 87 DirectedGraph<Object , DefaultEdge> g = 88 new DefaultDirectedGraph<Object , DefaultEdge>(DefaultEdge.class); 89 Map<String , Object > resultMap = new HashMap<String , Object >(); 90 gen.generateGraph(g, vertexFactory, resultMap); 91 assertEquals(SIZE, g.vertexSet().size()); 92 assertEquals(0, g.edgeSet().size()); 93 assertTrue(resultMap.isEmpty()); 94 } 95 96 99 public void testLinearGraphGenerator() 100 { 101 GraphGenerator<Object , DefaultEdge, Object > gen = 102 new LinearGraphGenerator<Object , DefaultEdge>(SIZE); 103 DirectedGraph<Object , DefaultEdge> g = 104 new DefaultDirectedGraph<Object , DefaultEdge>(DefaultEdge.class); 105 Map<String , Object > resultMap = new HashMap<String , Object >(); 106 gen.generateGraph(g, vertexFactory, resultMap); 107 assertEquals(SIZE, g.vertexSet().size()); 108 assertEquals(SIZE - 1, g.edgeSet().size()); 109 110 Object startVertex = resultMap.get(LinearGraphGenerator.START_VERTEX); 111 Object endVertex = resultMap.get(LinearGraphGenerator.END_VERTEX); 112 Iterator vertexIter = g.vertexSet().iterator(); 113 114 while (vertexIter.hasNext()) { 115 Object vertex = vertexIter.next(); 116 117 if (vertex == startVertex) { 118 assertEquals(0, g.inDegreeOf(vertex)); 119 assertEquals(1, g.outDegreeOf(vertex)); 120 121 continue; 122 } 123 124 if (vertex == endVertex) { 125 assertEquals(1, g.inDegreeOf(vertex)); 126 assertEquals(0, g.outDegreeOf(vertex)); 127 128 continue; 129 } 130 131 assertEquals(1, g.inDegreeOf(vertex)); 132 assertEquals(1, g.outDegreeOf(vertex)); 133 } 134 } 135 136 139 public void testRingGraphGenerator() 140 { 141 GraphGenerator<Object , DefaultEdge, Object > gen = 142 new RingGraphGenerator<Object , DefaultEdge>(SIZE); 143 DirectedGraph<Object , DefaultEdge> g = 144 new DefaultDirectedGraph<Object , DefaultEdge>(DefaultEdge.class); 145 Map<String , Object > resultMap = new HashMap<String , Object >(); 146 gen.generateGraph(g, vertexFactory, resultMap); 147 assertEquals(SIZE, g.vertexSet().size()); 148 assertEquals(SIZE, g.edgeSet().size()); 149 150 Object startVertex = g.vertexSet().iterator().next(); 151 assertEquals(1, g.outDegreeOf(startVertex)); 152 153 Object nextVertex = startVertex; 154 Set<Object > seen = new HashSet<Object >(); 155 156 for (int i = 0; i < SIZE; ++i) { 157 DefaultEdge nextEdge = 158 g.outgoingEdgesOf(nextVertex).iterator().next(); 159 nextVertex = g.getEdgeTarget(nextEdge); 160 assertEquals(1, g.inDegreeOf(nextVertex)); 161 assertEquals(1, g.outDegreeOf(nextVertex)); 162 assertTrue(!seen.contains(nextVertex)); 163 seen.add(nextVertex); 164 } 165 166 assertTrue(nextVertex == startVertex); 168 assertTrue(resultMap.isEmpty()); 169 } 170 171 } 173 | Popular Tags |