equal
deleted
inserted
replaced
1 #include<iostream> |
1 #include<iostream> |
2 #include<hugo/smart_graph.h> |
2 #include<hugo/smart_graph.h> |
3 #include<hugo/skeletons/graph.h> |
3 #include<hugo/skeletons/graph.h> |
|
4 #include"test_tools.h" |
|
5 |
4 //#include<../work/alpar/list_graph.h> |
6 //#include<../work/alpar/list_graph.h> |
5 |
7 |
6 /* |
8 /* |
7 This test makes consistency checks of list graph structures. |
9 This test makes consistency checks of list graph structures. |
8 |
10 |
9 G.addNode(), G.addEdge(), G.valid(), G.tail(), G.head() |
11 G.addNode(), G.addEdge(), G.valid(), G.tail(), G.head() |
10 |
12 |
11 */ |
13 */ |
12 |
14 |
13 using namespace hugo; |
15 using namespace hugo; |
14 |
|
15 // void check(bool rc, const char *msg) { |
|
16 // if(!rc) { |
|
17 // std::cerr << msg << std::endl; |
|
18 // exit(1); |
|
19 // } |
|
20 // } |
|
21 |
|
22 #define check(rc, msg) \ |
|
23 if(!rc) { \ |
|
24 std::cerr << __FILE__ ":" << __LINE__ << ": error: " << msg << std::endl; \ |
|
25 exit(1); \ |
|
26 } else { } \ |
|
27 |
|
28 |
16 |
29 template<class Graph> void checkCompile(Graph &G) |
17 template<class Graph> void checkCompile(Graph &G) |
30 { |
18 { |
31 typedef typename Graph::Node Node; |
19 typedef typename Graph::Node Node; |
32 typedef typename Graph::NodeIt NodeIt; |
20 typedef typename Graph::NodeIt NodeIt; |
170 m=dm; //Copy to another type |
158 m=dm; //Copy to another type |
171 } |
159 } |
172 |
160 |
173 } |
161 } |
174 |
162 |
175 template<class Graph> struct PetNodes |
|
176 { |
|
177 std::vector<typename Graph::Node> outer, inner; |
|
178 std::vector<typename Graph::Edge> outcir, incir, cons; |
|
179 }; |
|
180 |
|
181 template<class Graph> PetNodes<Graph> addPetersen(Graph &G,int num=5) |
|
182 { |
|
183 //std::vector<typename Graph::Node> outer, inner; |
|
184 |
|
185 PetNodes<Graph> n; |
|
186 |
|
187 for(int i=0;i<num;i++) { |
|
188 n.outer.push_back(G.addNode()); |
|
189 n.inner.push_back(G.addNode()); |
|
190 } |
|
191 |
|
192 for(int i=0;i<num;i++) { |
|
193 n.cons.push_back(G.addEdge(n.outer[i],n.inner[i])); |
|
194 n.outcir.push_back(G.addEdge(n.outer[i],n.outer[(i+1)%5])); |
|
195 n.incir.push_back(G.addEdge(n.inner[i],n.inner[(i+2)%5])); |
|
196 } |
|
197 return n; |
|
198 } |
|
199 |
|
200 template<class Graph> void checkNodeList(Graph &G, int nn) |
163 template<class Graph> void checkNodeList(Graph &G, int nn) |
201 { |
164 { |
202 typename Graph::NodeIt n(G); |
165 typename Graph::NodeIt n(G); |
203 for(int i=0;i<nn;i++) { |
166 for(int i=0;i<nn;i++) { |
204 check(G.valid(n),"Wrong Node list linking."); |
167 check(G.valid(n),"Wrong Node list linking."); |