1.1 --- a/test/bpgraph_test.cc Sun Nov 14 22:48:32 2010 +0100
1.2 +++ b/test/bpgraph_test.cc Mon Nov 15 09:46:08 2010 +0100
1.3 @@ -17,7 +17,7 @@
1.4 */
1.5
1.6 #include <lemon/concepts/bpgraph.h>
1.7 -//#include <lemon/list_graph.h>
1.8 +#include <lemon/list_graph.h>
1.9 #include <lemon/smart_graph.h>
1.10 #include <lemon/full_graph.h>
1.11
1.12 @@ -107,11 +107,108 @@
1.13 checkGraphEdgeMap(G);
1.14 }
1.15
1.16 -template <class Graph>
1.17 +template <class BpGraph>
1.18 +void checkBpGraphErase() {
1.19 + TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
1.20 +
1.21 + BpGraph G;
1.22 + Node
1.23 + n1 = G.addRedNode(), n2 = G.addBlueNode(),
1.24 + n3 = G.addBlueNode(), n4 = G.addRedNode();
1.25 + Edge
1.26 + e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
1.27 + e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
1.28 +
1.29 + // Check edge deletion
1.30 + G.erase(e2);
1.31 +
1.32 + checkGraphNodeList(G, 4);
1.33 + checkGraphRedNodeList(G, 2);
1.34 + checkGraphBlueNodeList(G, 2);
1.35 + checkGraphEdgeList(G, 3);
1.36 + checkGraphArcList(G, 6);
1.37 +
1.38 + checkGraphIncEdgeArcLists(G, n1, 1);
1.39 + checkGraphIncEdgeArcLists(G, n2, 2);
1.40 + checkGraphIncEdgeArcLists(G, n3, 1);
1.41 + checkGraphIncEdgeArcLists(G, n4, 2);
1.42 +
1.43 + checkGraphConEdgeList(G, 3);
1.44 + checkGraphConArcList(G, 6);
1.45 +
1.46 + // Check node deletion
1.47 + G.erase(n3);
1.48 +
1.49 + checkGraphNodeList(G, 3);
1.50 + checkGraphRedNodeList(G, 2);
1.51 + checkGraphBlueNodeList(G, 1);
1.52 + checkGraphEdgeList(G, 2);
1.53 + checkGraphArcList(G, 4);
1.54 +
1.55 + checkGraphIncEdgeArcLists(G, n1, 1);
1.56 + checkGraphIncEdgeArcLists(G, n2, 2);
1.57 + checkGraphIncEdgeArcLists(G, n4, 1);
1.58 +
1.59 + checkGraphConEdgeList(G, 2);
1.60 + checkGraphConArcList(G, 4);
1.61 +
1.62 +}
1.63 +
1.64 +template <class BpGraph>
1.65 +void checkBpGraphAlter() {
1.66 + TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
1.67 +
1.68 + BpGraph G;
1.69 + Node
1.70 + n1 = G.addRedNode(), n2 = G.addBlueNode(),
1.71 + n3 = G.addBlueNode(), n4 = G.addRedNode();
1.72 + Edge
1.73 + e1 = G.addEdge(n1, n2), e2 = G.addEdge(n1, n3),
1.74 + e3 = G.addEdge(n4, n2), e4 = G.addEdge(n4, n3);
1.75 +
1.76 + G.changeRed(e2, n4);
1.77 + check(G.redNode(e2) == n4, "Wrong red node");
1.78 + check(G.blueNode(e2) == n3, "Wrong blue node");
1.79 +
1.80 + checkGraphNodeList(G, 4);
1.81 + checkGraphRedNodeList(G, 2);
1.82 + checkGraphBlueNodeList(G, 2);
1.83 + checkGraphEdgeList(G, 4);
1.84 + checkGraphArcList(G, 8);
1.85 +
1.86 + checkGraphIncEdgeArcLists(G, n1, 1);
1.87 + checkGraphIncEdgeArcLists(G, n2, 2);
1.88 + checkGraphIncEdgeArcLists(G, n3, 2);
1.89 + checkGraphIncEdgeArcLists(G, n4, 3);
1.90 +
1.91 + checkGraphConEdgeList(G, 4);
1.92 + checkGraphConArcList(G, 8);
1.93 +
1.94 + G.changeBlue(e2, n2);
1.95 + check(G.redNode(e2) == n4, "Wrong red node");
1.96 + check(G.blueNode(e2) == n2, "Wrong blue node");
1.97 +
1.98 + checkGraphNodeList(G, 4);
1.99 + checkGraphRedNodeList(G, 2);
1.100 + checkGraphBlueNodeList(G, 2);
1.101 + checkGraphEdgeList(G, 4);
1.102 + checkGraphArcList(G, 8);
1.103 +
1.104 + checkGraphIncEdgeArcLists(G, n1, 1);
1.105 + checkGraphIncEdgeArcLists(G, n2, 3);
1.106 + checkGraphIncEdgeArcLists(G, n3, 1);
1.107 + checkGraphIncEdgeArcLists(G, n4, 3);
1.108 +
1.109 + checkGraphConEdgeList(G, 4);
1.110 + checkGraphConArcList(G, 8);
1.111 +}
1.112 +
1.113 +
1.114 +template <class BpGraph>
1.115 void checkBpGraphSnapshot() {
1.116 - TEMPLATE_BPGRAPH_TYPEDEFS(Graph);
1.117 + TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
1.118
1.119 - Graph G;
1.120 + BpGraph G;
1.121 Node
1.122 n1 = G.addRedNode(),
1.123 n2 = G.addBlueNode(),
1.124 @@ -126,7 +223,7 @@
1.125 checkGraphEdgeList(G, 2);
1.126 checkGraphArcList(G, 4);
1.127
1.128 - typename Graph::Snapshot snapshot(G);
1.129 + typename BpGraph::Snapshot snapshot(G);
1.130
1.131 Node n4 = G.addRedNode();
1.132 G.addEdge(n4, n2);
1.133 @@ -190,10 +287,10 @@
1.134 checkGraphArcList(G, 4);
1.135 }
1.136
1.137 -template <typename Graph>
1.138 +template <typename BpGraph>
1.139 void checkBpGraphValidity() {
1.140 - TEMPLATE_GRAPH_TYPEDEFS(Graph);
1.141 - Graph g;
1.142 + TEMPLATE_BPGRAPH_TYPEDEFS(BpGraph);
1.143 + BpGraph g;
1.144
1.145 Node
1.146 n1 = g.addRedNode(),
1.147 @@ -325,6 +422,13 @@
1.148 }
1.149
1.150 void checkGraphs() {
1.151 + { // Checking ListGraph
1.152 + checkBpGraphBuild<ListBpGraph>();
1.153 + checkBpGraphErase<ListBpGraph>();
1.154 + checkBpGraphAlter<ListBpGraph>();
1.155 + checkBpGraphSnapshot<ListBpGraph>();
1.156 + checkBpGraphValidity<ListBpGraph>();
1.157 + }
1.158 { // Checking SmartGraph
1.159 checkBpGraphBuild<SmartBpGraph>();
1.160 checkBpGraphSnapshot<SmartBpGraph>();