KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > prefuse > data > GraphTest


1 package test.prefuse.data;
2
3 import java.util.Iterator JavaDoc;
4
5 import junit.framework.TestCase;
6 import prefuse.data.Edge;
7 import prefuse.data.Graph;
8 import prefuse.data.Node;
9 import prefuse.data.Table;
10 import prefuse.util.GraphLib;
11 import test.prefuse.TestConfig;
12
13 public class GraphTest extends TestCase implements GraphTestData {
14
15     public static Graph getTestCaseGraph() {
16         Table nodes = new Table(NNODES, NNODECOLS);
17         for ( int c=0; c<NNODECOLS; ++c ) {
18             nodes.addColumn(NHEADERS[c], NTYPES[c]);
19             for ( int r=0; r<NNODES; ++r ) {
20                 nodes.set(r, NHEADERS[c], NODES[c][r]);
21             }
22         }
23         
24         Table edges = new Table(NEDGES, NEDGECOLS);
25         for ( int c=0; c<NEDGECOLS; ++c ) {
26             edges.addColumn(EHEADERS[c], ETYPES[c]);
27             for ( int r=0; r<NEDGES; ++r ) {
28                 edges.set(r, EHEADERS[c], EDGES[c][r]);
29             }
30         }
31         
32         return new Graph(nodes, edges, false,
33                 NHEADERS[0], EHEADERS[0], EHEADERS[1]);
34     }
35     
36     private Graph graph;
37     
38     protected void setUp() throws Exception JavaDoc {
39         super.setUp();
40         graph = getTestCaseGraph();
41     }
42
43     /**
44      * @see junit.framework.TestCase#tearDown()
45      */

46     protected void tearDown() throws Exception JavaDoc {
47         super.tearDown();
48         graph = null;
49     }
50     
51     public void testGraph() {
52         boolean verbose = TestConfig.verbose();
53         
54         Table nodes = graph.getNodeTable();
55         Table edges = graph.getEdgeTable();
56         
57         // check the basics
58
assertEquals(NNODES, graph.getNodeCount());
59         assertEquals(NEDGES, graph.getEdgeCount());
60         assertEquals(NHEADERS[0], graph.getNodeKeyField());
61         assertEquals(EHEADERS[0], graph.getEdgeSourceField());
62         assertEquals(EHEADERS[1], graph.getEdgeTargetField());
63         
64         // check all nodes, basic data
65
Iterator JavaDoc niter = graph.nodes();
66         while ( niter.hasNext() ) {
67             Node node = (Node)niter.next();
68             int nrow = node.getRow();
69
70             if ( verbose ) System.out.print(nrow+"\t");
71             
72             // check data members
73
for ( int i=0; i<NNODECOLS; ++i ) {
74                 assertEquals(NODES[i][nrow], node.get(NHEADERS[i]));
75                 assertEquals(NODES[i][nrow], nodes.get(nrow, NHEADERS[i]));
76                 if ( verbose ) System.out.print(NHEADERS[i]+":"+NODES[i][nrow]+"\t");
77             }
78             
79             if ( verbose ) {
80                 System.out.print("in:"+node.getInDegree());
81                 System.out.print("\t");
82                 System.out.print("out:"+node.getOutDegree());
83                 System.out.println();
84             }
85             
86             // check degrees
87
assertEquals(node.getInDegree(), INDEGREE[nrow]);
88             assertEquals(graph.getInDegree(nrow), INDEGREE[nrow]);
89             assertEquals(node.getOutDegree(), OUTDEGREE[nrow]);
90             assertEquals(graph.getOutDegree(nrow), OUTDEGREE[nrow]);
91             
92             // check edges
93
Iterator JavaDoc eiter = node.inEdges();
94             while ( eiter.hasNext() ) {
95                 Edge edge = (Edge)eiter.next();
96                 int erow = edge.getRow();
97                 assertEquals(nrow, edge.getTargetNode().getRow());
98                 assertEquals(nrow, graph.getTargetNode(erow));
99             }
100             eiter = node.outEdges();
101             while ( eiter.hasNext() ) {
102                 Edge edge = (Edge)eiter.next();
103                 int erow = edge.getRow();
104                 assertEquals(nrow, edge.getSourceNode().getRow());
105                 assertEquals(nrow, graph.getSourceNode(erow));
106             }
107         }
108         
109         // check all edges, basic data
110
Iterator JavaDoc eiter = graph.edges();
111         while ( eiter.hasNext() ) {
112             Edge edge = (Edge)eiter.next();
113             int erow = edge.getRow();
114             
115             // check data members
116
for ( int i=0; i<NEDGECOLS; ++i ) {
117                 assertEquals(EDGES[i][erow], edge.get(EHEADERS[i]));
118                 assertEquals(EDGES[i][erow], edges.get(erow, EHEADERS[i]));
119             }
120             
121             // check nodes
122
Node s = edge.getSourceNode();
123             int srow = s.getRow();
124             assertEquals(srow, graph.getSourceNode(erow));
125             int sk = nodes.getInt(srow, NHEADERS[0]);
126             assertEquals(sk, edges.getInt(erow, EHEADERS[0]));
127             
128             Node t = edge.getTargetNode();
129             int trow = t.getRow();
130             assertEquals(trow, graph.getTargetNode(erow));
131             int tk = nodes.getInt(trow, NHEADERS[0]);
132             assertEquals(tk, edges.getInt(erow, EHEADERS[1]));
133             
134             assertEquals(srow, edge.getAdjacentNode(t).getRow());
135             assertEquals(trow, edge.getAdjacentNode(s).getRow());
136             assertEquals(srow, graph.getAdjacentNode(erow, trow));
137             assertEquals(trow, graph.getAdjacentNode(erow, srow));
138         }
139     }
140     
141     public void testRemoveNode() {
142         int cliqueSize = 5;
143         Graph g = GraphLib.getClique(cliqueSize);
144         Edge[] edges = new Edge[4];
145         
146         Node rem = (Node)g.nodes().next();
147         Iterator JavaDoc it = rem.edges();
148         for ( int i=0; it.hasNext(); ++i ) {
149             edges[i] = (Edge)it.next();
150         }
151         
152         assertEquals(true, g.removeNode(rem));
153         assertEquals(false, rem.isValid());
154         
155         Iterator JavaDoc nodes = g.nodes();
156         while ( nodes.hasNext() ) {
157             assertEquals(cliqueSize-2, ((Node)nodes.next()).getDegree());
158         }
159         for ( int i=0; i<edges.length; ++i ) {
160             assertEquals(false, edges[i].isValid());
161         }
162     }
163 }
164
Popular Tags