1 25 40 package org.jgrapht.graph; 41 42 import java.util.*; 43 44 import junit.framework.*; 45 46 import org.jgrapht.*; 47 48 49 55 public class SubgraphTest 56 extends TestCase 57 { 58 59 61 private String v1 = "v1"; 62 private String v2 = "v2"; 63 private String v3 = "v3"; 64 private String v4 = "v4"; 65 66 68 71 public SubgraphTest(String name) 72 { 73 super(name); 74 } 75 76 78 81 public void testInducedSubgraphListener() 82 { 83 Graph<String , DefaultEdge> g = init(true); 84 Subgraph<String , DefaultEdge> sub = 85 new Subgraph<String , DefaultEdge>(g, null); 86 87 assertEquals(g.vertexSet(), sub.vertexSet()); 88 assertEquals(g.edgeSet(), sub.edgeSet()); 89 90 g.addEdge(v3, v4); 91 92 assertEquals(g.vertexSet(), sub.vertexSet()); 93 assertEquals(g.edgeSet(), sub.edgeSet()); 94 } 95 96 99 public void testSubgraph() 100 { 101 Graph<String , DefaultEdge> g = init(false); 102 Subgraph<String , DefaultEdge> sub = 103 new Subgraph<String , DefaultEdge>(g, null, null); 104 105 assertEquals(g.vertexSet(), sub.vertexSet()); 106 assertEquals(g.edgeSet(), sub.edgeSet()); 107 108 Set<String > vset = new HashSet<String >(g.vertexSet()); 109 g.removeVertex(v1); 110 assertEquals(vset, sub.vertexSet()); 112 g = init(false); 113 vset = new HashSet<String >(); 114 vset.add(v1); 115 sub = new Subgraph<String , DefaultEdge>(g, vset, null); 116 assertEquals(vset, sub.vertexSet()); 117 assertEquals(0, sub.degreeOf(v1)); 118 assertEquals(Collections.EMPTY_SET, sub.edgeSet()); 119 120 vset.add(v2); 121 vset.add(v3); 122 sub = 123 new Subgraph<String , DefaultEdge>( 124 g, 125 vset, 126 new HashSet<DefaultEdge>(g.getAllEdges(v1, v2))); 127 assertEquals(vset, sub.vertexSet()); 128 assertEquals(1, sub.edgeSet().size()); 129 } 130 131 134 public void testSubgraphListener() 135 { 136 Graph<String , DefaultEdge> g = init(true); 137 Subgraph<String , DefaultEdge> sub = 138 new Subgraph<String , DefaultEdge>(g, null, null); 139 140 assertEquals(g.vertexSet(), sub.vertexSet()); 141 assertEquals(g.edgeSet(), sub.edgeSet()); 142 143 Set<String > vset = new HashSet<String >(g.vertexSet()); 144 g.removeVertex(v1); 145 vset.remove(v1); 146 assertEquals(vset, sub.vertexSet()); assertEquals(g.edgeSet(), sub.edgeSet()); 148 } 149 150 private Graph<String , DefaultEdge> init(boolean listenable) 151 { 152 Graph<String , DefaultEdge> g; 153 154 if (listenable) { 155 g = 156 new ListenableUndirectedGraph<String , DefaultEdge>( 157 DefaultEdge.class); 158 } else { 159 g = new SimpleGraph<String , DefaultEdge>( 160 DefaultEdge.class); 161 } 162 163 g.addVertex(v1); 164 g.addVertex(v2); 165 g.addVertex(v3); 166 g.addVertex(v4); 167 g.addEdge(v1, v2); 168 g.addEdge(v2, v3); 169 g.addEdge(v3, v1); 170 g.addEdge(v1, v4); 171 172 return g; 173 } 174 } 175 | Popular Tags |