AuD
Lecture 'Algorithmen und Datenstrukturen' (code examples)
aud.test.GraphTest Class Reference

Public Member Functions

void testDirectedGraph (AbstractGraph< SimpleNode, SimpleEdge > g)
 
void testUndirectedGraph (AbstractGraph< SimpleNode, SimpleEdge > g)
 
void testGraph ()
 
void testOther ()
 
void testDouble ()
 
void testDouble2 ()
 

Static Public Member Functions

static void main (String args[])
 

Detailed Description

Definition at line 11 of file GraphTest.java.

Member Function Documentation

◆ main()

static void aud.test.GraphTest.main ( String  args[])
static

Definition at line 279 of file GraphTest.java.

279 {
280 org.junit.runner.JUnitCore.main("aud.test.GraphTest");
281 }

◆ testDirectedGraph()

void aud.test.GraphTest.testDirectedGraph ( AbstractGraph< SimpleNode, SimpleEdge g)

Definition at line 13 of file GraphTest.java.

14 {
15
16 assertTrue(g.isDirected());
17
18 SimpleNode n0=g.addNode(); assertNotNull(n0);
19 SimpleNode n1=g.addNode(); assertNotNull(n1);
20 SimpleNode n2=g.addNode(); assertNotNull(n2);
21
22 assertSame(n0.graph(),g);
23 assertSame(n1.graph(),g);
24 assertSame(n2.graph(),g);
25
26 SimpleEdge e0=g.addEdge(n0,n1); assertNotNull(e0);
27 SimpleEdge e1=g.addEdge(n1,n0); assertNotNull(e1);
28
29 SimpleEdge e2=g.addEdge(n0,n2); assertNotNull(e2);
30 SimpleEdge e3=g.addEdge(n2,n1); assertNotNull(e3);
31
32 assertSame(e0.graph(),g);
33 assertSame(e1.graph(),g);
34 assertSame(e2.graph(),g);
35 assertSame(e3.graph(),g);
36
37 assertSame(e0.source(),n0);
38 assertSame(e1.source(),n1);
39 assertSame(e2.source(),n0);
40 assertSame(e3.source(),n2);
41
42 assertSame(e0.destination(),n1);
43 assertSame(e1.destination(),n0);
44 assertSame(e2.destination(),n2);
45 assertSame(e3.destination(),n1);
46
47 assertSame(g.getEdge(n0,n1),e0);
48 assertSame(g.getEdge(n1,n0),e1);
49 assertSame(g.getEdge(n0,n2),e2);
50 assertSame(g.getEdge(n2,n1),e3);
51
52 //System.err.println(g);//
53
54 TreeSet<SimpleNode> nodes=new TreeSet<SimpleNode>();
55 for (SimpleNode node : g) {
56 boolean b=nodes.add(node);
57 assertTrue(b);
58 }
59 assertSame(nodes.size(),3);
60 assertTrue(nodes.contains(n0));
61 assertTrue(nodes.contains(n1));
62 assertTrue(nodes.contains(n2));
63
64 TreeSet<SimpleEdge> edges=new TreeSet<SimpleEdge>();
65 for (SimpleEdge edge : g.edges()) {
66 boolean b=edges.add(edge);
67 assertTrue(b);
68 }
69 assertSame(edges.size(),4);
70 assertTrue(edges.contains(e0));
71 assertTrue(edges.contains(e1));
72 assertTrue(edges.contains(e2));
73 assertTrue(edges.contains(e3));
74
75 Vector<SimpleEdge> out=g.getOutEdges(n0);
76 assertSame(out.size(),g.getOutDegree(n0));
77 assertSame(out.size(),2);
78 assertTrue(out.at(0)==e0 || out.at(1)==e2);
79 assertTrue(out.at(1)==e0 || out.at(1)==e2);
80
81 Vector<SimpleEdge> in=g.getInEdges(n0);
82 assertSame(in.size(),g.getInDegree(n0));
83 assertSame(in.size(),1);
84 assertSame(in.at(0),e1);
85
86 assertSame(g.getDegree(n0),in.size()+out.size());
87
88 //
89
90 g.removeEdge(e0);
91 edges.remove(e0);
92
93 //System.err.println(g);//
94
95 assertNull(g.getEdge(n0,n1));
96 out=g.getOutEdges(n0);
97 assertSame(out.size(),g.getOutDegree(n0));
98 assertSame(out.size(),1);
99 assertSame(out.at(0),e2);
100
101 in=g.getInEdges(n1);
102 assertSame(in.size(),g.getInDegree(n1));
103 assertSame(in.size(),1);
104 assertSame(in.at(0),e3);
105
106 assertSame(g.getDegree(n0),in.size()+out.size());
107
108 //
109
110 g.removeNode(n2);
111 nodes.remove(n2);
112 edges.remove(e2);
113 edges.remove(e3);
114
115 //System.err.println(g);//
116
117 assertSame(g.getNumNodes(),2);
118 assertTrue(g.getSomeNode()==n0 || g.getSomeNode()==n1);
119
120 for (SimpleNode node : g)
121 assertTrue(nodes.contains(node));
122
123 {
124 int n=0;
125 for (SimpleEdge edge : g.edges()) {
126 assertTrue(edges.contains(edge));
127 ++n;
128 }
129 assert(n==1);
130 }
131 }
Implementation of an array-based vector.
Definition: Vector.java:44
T at(int i)
get i-th entry [O(1)]
Definition: Vector.java:92
int size()
get number of entries [O(1)]
Definition: Vector.java:60
AbstractNode source()
Get source node.
AbstractGraph<? extends AbstractNode,? extends AbstractEdge > graph()
get graph
AbstractNode destination()
get destination node
abstract Edge addEdge(Node source, Node destination)
Create and add new edge from source to destination.
abstract boolean isDirected()
Is graph directed?
abstract Node addNode()
create and add new node
abstract Edge getEdge(Node source, Node destination)
Get edge from source to destination.
AbstractGraph<? extends AbstractNode,? extends AbstractEdge > graph()
get graph
plain simple edge
Definition: SimpleEdge.java:4
plain simple node
Definition: SimpleNode.java:4

References aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.addEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.addNode(), aud.Vector< T >.at(), aud.graph.AbstractEdge.destination(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.edges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getInDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getInEdges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getNumNodes(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getOutDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getOutEdges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getSomeNode(), aud.graph.AbstractEdge.graph(), aud.graph.AbstractNode.graph(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.isDirected(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.removeEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.removeNode(), aud.Vector< T >.size(), and aud.graph.AbstractEdge.source().

Referenced by aud.test.GraphTest.testGraph().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ testDouble()

void aud.test.GraphTest.testDouble ( )

Definition at line 260 of file GraphTest.java.

260 {
262 (new SimpleNode(),new SimpleEdge(),false);
263 SimpleNode n1=g.addNode();
264 SimpleNode n2=g.addNode();
265 g.addEdge(n1,n2);
266 g.addEdge(n2,n1);
267 }
Graph implementation based on adjacency matrix.
Definition: GraphAM.java:15
Edge addEdge(Node source, Node destination)
Definition: GraphAM.java:49

References aud.graph.GraphAM< Node extends AbstractNode, Edge extends AbstractEdge >.addEdge(), and aud.graph.GraphAM< Node extends AbstractNode, Edge extends AbstractEdge >.addNode().

+ Here is the call graph for this function:

◆ testDouble2()

void aud.test.GraphTest.testDouble2 ( )

◆ testGraph()

void aud.test.GraphTest.testGraph ( )

Definition at line 240 of file GraphTest.java.

240 {
242 (new SimpleNode(),new SimpleEdge(),true));
244 (new SimpleNode(),new SimpleEdge(),false));
245 }
void testUndirectedGraph(AbstractGraph< SimpleNode, SimpleEdge > g)
Definition: GraphTest.java:134
void testDirectedGraph(AbstractGraph< SimpleNode, SimpleEdge > g)
Definition: GraphTest.java:14

References aud.test.GraphTest.testDirectedGraph(), and aud.test.GraphTest.testUndirectedGraph().

+ Here is the call graph for this function:

◆ testOther()

void aud.test.GraphTest.testOther ( )

◆ testUndirectedGraph()

void aud.test.GraphTest.testUndirectedGraph ( AbstractGraph< SimpleNode, SimpleEdge g)

Definition at line 133 of file GraphTest.java.

134 {
135
136 assertFalse(g.isDirected());
137
138 SimpleNode n0=g.addNode(); assertNotNull(n0);
139 SimpleNode n1=g.addNode(); assertNotNull(n1);
140 SimpleNode n2=g.addNode(); assertNotNull(n2);
141
142 assertSame(n0.graph(),g);
143 assertSame(n1.graph(),g);
144 assertSame(n2.graph(),g);
145
146 SimpleEdge e0=g.addEdge(n0,n1); assertNotNull(e0);
147 SimpleEdge e1=g.addEdge(n2,n1); assertNotNull(e1);
148
149 assertSame(e0.graph(),g);
150 assertSame(e1.graph(),g);
151
152 assertSame(g.getEdge(n0,n1),e0);
153 assertSame(g.getEdge(n1,n0),e0);
154 assertSame(g.getEdge(n1,n2),e1);
155 assertSame(g.getEdge(n2,n1),e1);
156
157 //System.err.println(g);//
158
159 TreeSet<SimpleNode> nodes=new TreeSet<SimpleNode>();
160 for (SimpleNode node : g) {
161 boolean b=nodes.add(node);
162 assertTrue(b);
163 }
164 assertSame(nodes.size(),3);
165 assertTrue(nodes.contains(n0));
166 assertTrue(nodes.contains(n1));
167 assertTrue(nodes.contains(n2));
168
169 TreeSet<SimpleEdge> edges=new TreeSet<SimpleEdge>();
170 for (SimpleEdge edge : g.edges()) {
171 boolean b=edges.add(edge);
172 assertTrue(b);
173 }
174 assertSame(edges.size(),2);
175 assertTrue(edges.contains(e0));
176 assertTrue(edges.contains(e1));
177
178 Vector<SimpleEdge> out=g.getOutEdges(n0);
179 assertSame(out.size(),g.getOutDegree(n0));
180 assertSame(out.size(),1);
181 assertTrue(out.at(0)==e0);
182
183 Vector<SimpleEdge> in=g.getInEdges(n0);
184 assertSame(in.size(),g.getInDegree(n0));
185 assertSame(in.size(),1);
186 assertSame(in.at(0),e0);
187
188 assertSame(g.getDegree(n0),in.size());
189
190 //
191
192 g.removeEdge(e0);
193 edges.remove(e0);
194
195 //System.err.println(g);//
196
197 assertNull(g.getEdge(n0,n1));
198 assertNull(g.getEdge(n1,n0));
199 out=g.getOutEdges(n0);
200 assertSame(out.size(),g.getDegree(n0));
201 assertSame(out.size(),0);
202
203 in=g.getInEdges(n0);
204 assertSame(in.size(),g.getDegree(n0));
205 assertSame(in.size(),0);
206
207
208 out=g.getOutEdges(n1);
209 assertSame(out.size(),g.getDegree(n1));
210 assertSame(out.size(),1);
211 assertSame(out.at(0),e1);
212
213 in=g.getInEdges(n1);
214 assertSame(in.size(),g.getDegree(n1));
215 assertSame(in.size(),1);
216 assertSame(in.at(0),e1);
217
218 //
219
220 g.removeNode(n2);
221 nodes.remove(n2);
222
223 //System.err.println(g);//
224
225 assertSame(g.getNumNodes(),2);
226 assertTrue(g.getSomeNode()==n0 || g.getSomeNode()==n1);
227
228 for (SimpleNode node : g)
229 assertTrue(nodes.contains(node));
230
231 {
232 int n=0;
233 for (@SuppressWarnings("unused") SimpleEdge edge : g.edges())
234 ++n;
235 assert(n==0);
236 }
237 }

References aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.addEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.addNode(), aud.Vector< T >.at(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.edges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getInDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getInEdges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getNumNodes(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getOutDegree(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getOutEdges(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.getSomeNode(), aud.graph.AbstractEdge.graph(), aud.graph.AbstractNode.graph(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.isDirected(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.removeEdge(), aud.graph.AbstractGraph< Node extends AbstractNode, Edge extends AbstractEdge >.removeNode(), and aud.Vector< T >.size().

Referenced by aud.test.GraphTest.testGraph().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: