39 checkGraphArcList(G, 0); |
39 checkGraphArcList(G, 0); |
40 |
40 |
41 G.reserveNode(3); |
41 G.reserveNode(3); |
42 G.reserveEdge(3); |
42 G.reserveEdge(3); |
43 |
43 |
44 Node |
44 RedNode |
45 rn1 = G.addRedNode(); |
45 rn1 = G.addRedNode(); |
46 checkGraphNodeList(G, 1); |
46 checkGraphNodeList(G, 1); |
47 checkGraphRedNodeList(G, 1); |
47 checkGraphRedNodeList(G, 1); |
48 checkGraphBlueNodeList(G, 0); |
48 checkGraphBlueNodeList(G, 0); |
49 checkGraphEdgeList(G, 0); |
49 checkGraphEdgeList(G, 0); |
50 checkGraphArcList(G, 0); |
50 checkGraphArcList(G, 0); |
51 |
51 |
52 Node |
52 BlueNode |
53 bn1 = G.addBlueNode(), |
53 bn1 = G.addBlueNode(), |
54 bn2 = G.addBlueNode(); |
54 bn2 = G.addBlueNode(); |
55 checkGraphNodeList(G, 3); |
55 checkGraphNodeList(G, 3); |
56 checkGraphRedNodeList(G, 1); |
56 checkGraphRedNodeList(G, 1); |
57 checkGraphBlueNodeList(G, 2); |
57 checkGraphBlueNodeList(G, 2); |
74 |
74 |
75 checkGraphConEdgeList(G, 1); |
75 checkGraphConEdgeList(G, 1); |
76 checkGraphConArcList(G, 2); |
76 checkGraphConArcList(G, 2); |
77 |
77 |
78 Edge |
78 Edge |
79 e2 = G.addEdge(rn1, bn1), |
79 e2 = G.addEdge(bn1, rn1), |
80 e3 = G.addEdge(rn1, bn2); |
80 e3 = G.addEdge(rn1, bn2); |
81 |
81 |
82 checkGraphNodeList(G, 3); |
82 checkGraphNodeList(G, 3); |
83 checkGraphRedNodeList(G, 1); |
83 checkGraphRedNodeList(G, 1); |
84 checkGraphBlueNodeList(G, 2); |
84 checkGraphBlueNodeList(G, 2); |
110 template <class BpGraph> |
110 template <class BpGraph> |
111 void checkBpGraphErase() { |
111 void checkBpGraphErase() { |
112 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
112 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
113 |
113 |
114 BpGraph G; |
114 BpGraph G; |
115 Node |
115 RedNode |
116 n1 = G.addRedNode(), n2 = G.addBlueNode(), |
116 n1 = G.addRedNode(), n4 = G.addRedNode(); |
117 n3 = G.addBlueNode(), n4 = G.addRedNode(); |
117 BlueNode |
|
118 n2 = G.addBlueNode(), n3 = G.addBlueNode(); |
118 Edge |
119 Edge |
119 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), |
120 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), |
120 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); |
121 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); |
121 |
122 |
122 // Check edge deletion |
123 // Check edge deletion |
157 template <class BpGraph> |
158 template <class BpGraph> |
158 void checkBpGraphAlter() { |
159 void checkBpGraphAlter() { |
159 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
160 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
160 |
161 |
161 BpGraph G; |
162 BpGraph G; |
162 Node |
163 RedNode |
163 n1 = G.addRedNode(), n2 = G.addBlueNode(), |
164 n1 = G.addRedNode(), n4 = G.addRedNode(); |
164 n3 = G.addBlueNode(), n4 = G.addRedNode(); |
165 BlueNode |
|
166 n2 = G.addBlueNode(), n3 = G.addBlueNode(); |
165 Edge |
167 Edge |
166 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), |
168 e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3), |
167 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); |
169 e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3); |
168 |
170 |
169 G.changeRed(e2, n4); |
171 G.changeRed(e2, n4); |
207 template <class BpGraph> |
209 template <class BpGraph> |
208 void checkBpGraphSnapshot() { |
210 void checkBpGraphSnapshot() { |
209 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
211 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
210 |
212 |
211 BpGraph G; |
213 BpGraph G; |
212 Node |
214 RedNode |
213 n1 = G.addRedNode(), |
215 n1 = G.addRedNode(); |
|
216 BlueNode |
214 n2 = G.addBlueNode(), |
217 n2 = G.addBlueNode(), |
215 n3 = G.addBlueNode(); |
218 n3 = G.addBlueNode(); |
216 Edge |
219 Edge |
217 e1 = G.addEdge(n1, n2), |
220 e1 = G.addEdge(n1, n2), |
218 e2 = G.addEdge(n1, n3); |
221 e2 = G.addEdge(n1, n3); |
223 checkGraphEdgeList(G, 2); |
226 checkGraphEdgeList(G, 2); |
224 checkGraphArcList(G, 4); |
227 checkGraphArcList(G, 4); |
225 |
228 |
226 typename BpGraph::Snapshot snapshot(G); |
229 typename BpGraph::Snapshot snapshot(G); |
227 |
230 |
228 Node n4 = G.addRedNode(); |
231 RedNode n4 = G.addRedNode(); |
229 G.addEdge(n4, n2); |
232 G.addEdge(n4, n2); |
230 G.addEdge(n4, n3); |
233 G.addEdge(n4, n3); |
231 |
234 |
232 checkGraphNodeList(G, 4); |
235 checkGraphNodeList(G, 4); |
233 checkGraphRedNodeList(G, 2); |
236 checkGraphRedNodeList(G, 2); |
290 template <typename BpGraph> |
293 template <typename BpGraph> |
291 void checkBpGraphValidity() { |
294 void checkBpGraphValidity() { |
292 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
295 TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph); |
293 BpGraph g; |
296 BpGraph g; |
294 |
297 |
295 Node |
298 RedNode |
296 n1 = g.addRedNode(), |
299 n1 = g.addRedNode(); |
|
300 BlueNode |
297 n2 = g.addBlueNode(), |
301 n2 = g.addBlueNode(), |
298 n3 = g.addBlueNode(); |
302 n3 = g.addBlueNode(); |
299 |
303 |
300 Edge |
304 Edge |
301 e1 = g.addEdge(n1, n2), |
305 e1 = g.addEdge(n1, n2), |
394 checkGraphArcMap(G); |
398 checkGraphArcMap(G); |
395 checkGraphEdgeMap(G); |
399 checkGraphEdgeMap(G); |
396 |
400 |
397 for (int i = 0; i < G.redNum(); ++i) { |
401 for (int i = 0; i < G.redNum(); ++i) { |
398 check(G.red(G.redNode(i)), "Wrong node"); |
402 check(G.red(G.redNode(i)), "Wrong node"); |
399 check(G.redIndex(G.redNode(i)) == i, "Wrong index"); |
403 check(G.index(G.redNode(i)) == i, "Wrong index"); |
400 } |
404 } |
401 |
405 |
402 for (int i = 0; i < G.blueNum(); ++i) { |
406 for (int i = 0; i < G.blueNum(); ++i) { |
403 check(G.blue(G.blueNode(i)), "Wrong node"); |
407 check(G.blue(G.blueNode(i)), "Wrong node"); |
404 check(G.blueIndex(G.blueNode(i)) == i, "Wrong index"); |
408 check(G.index(G.blueNode(i)) == i, "Wrong index"); |
405 } |
409 } |
406 |
410 |
407 for (NodeIt u(G); u != INVALID; ++u) { |
411 for (NodeIt u(G); u != INVALID; ++u) { |
408 for (NodeIt v(G); v != INVALID; ++v) { |
412 for (NodeIt v(G); v != INVALID; ++v) { |
409 Edge e = G.edge(u, v); |
413 Edge e = G.edge(u, v); |