gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Improve graph_copy_test.cc
0 1 0
default
1 file changed with 35 insertions and 29 deletions:
↑ Collapse diff ↑
Show white space 8 line context
... ...
@@ -17,16 +17,18 @@
17 17
 */
18 18

	
19 19
#include <lemon/smart_graph.h>
20 20
#include <lemon/list_graph.h>
21
#include <lemon/static_graph.h>
21 22
#include <lemon/lgf_reader.h>
22 23
#include <lemon/error.h>
23 24

	
24 25
#include "test_tools.h"
25 26

	
26 27
using namespace std;
27 28
using namespace lemon;
28 29

	
30
template <typename GR>
29 31
void digraph_copy_test() {
30 32
  const int nn = 10;
31 33

	
32 34
  // Build a digraph
... ...
@@ -52,19 +54,19 @@
52 54
    }
53 55
  }
54 56

	
55 57
  // Test digraph copy
56
  ListDigraph to;
57
  ListDigraph::NodeMap<int> tnm(to);
58
  ListDigraph::ArcMap<int> tam(to);
59
  ListDigraph::Node tn;
60
  ListDigraph::Arc ta;
58
  GR to;
59
  typename GR::template NodeMap<int> tnm(to);
60
  typename GR::template ArcMap<int> tam(to);
61
  typename GR::Node tn;
62
  typename GR::Arc ta;
61 63

	
62
  SmartDigraph::NodeMap<ListDigraph::Node> nr(from);
63
  SmartDigraph::ArcMap<ListDigraph::Arc> er(from);
64
  SmartDigraph::NodeMap<typename GR::Node> nr(from);
65
  SmartDigraph::ArcMap<typename GR::Arc> er(from);
64 66

	
65
  ListDigraph::NodeMap<SmartDigraph::Node> ncr(to);
66
  ListDigraph::ArcMap<SmartDigraph::Arc> ecr(to);
67
  typename GR::template NodeMap<SmartDigraph::Node> ncr(to);
68
  typename GR::template ArcMap<SmartDigraph::Arc> ecr(to);
67 69

	
68 70
  digraphCopy(from, to).
69 71
    nodeMap(fnm, tnm).arcMap(fam, tam).
70 72
    nodeRef(nr).arcRef(er).
... ...
@@ -85,13 +87,13 @@
85 87
    check(nr[from.source(it)] == to.source(er[it]), "Wrong copy.");
86 88
    check(nr[from.target(it)] == to.target(er[it]), "Wrong copy.");
87 89
  }
88 90

	
89
  for (ListDigraph::NodeIt it(to); it != INVALID; ++it) {
91
  for (typename GR::NodeIt it(to); it != INVALID; ++it) {
90 92
    check(nr[ncr[it]] == it, "Wrong copy.");
91 93
  }
92 94

	
93
  for (ListDigraph::ArcIt it(to); it != INVALID; ++it) {
95
  for (typename GR::ArcIt it(to); it != INVALID; ++it) {
94 96
    check(er[ecr[it]] == it, "Wrong copy.");
95 97
  }
96 98
  check(tn == nr[fn], "Wrong copy.");
97 99
  check(ta == er[fa], "Wrong copy.");
... ...
@@ -102,8 +104,9 @@
102 104
  check(countNodes(from) == countNodes(to), "Wrong copy.");
103 105
  check(countArcs(from) == countArcs(to), "Wrong copy.");
104 106
}
105 107

	
108
template <typename GR>
106 109
void graph_copy_test() {
107 110
  const int nn = 10;
108 111

	
109 112
  // Build a graph
... ...
@@ -134,23 +137,23 @@
134 137
    }
135 138
  }
136 139

	
137 140
  // Test graph copy
138
  ListGraph to;
139
  ListGraph::NodeMap<int> tnm(to);
140
  ListGraph::ArcMap<int> tam(to);
141
  ListGraph::EdgeMap<int> tem(to);
142
  ListGraph::Node tn;
143
  ListGraph::Arc ta;
144
  ListGraph::Edge te;
141
  GR to;
142
  typename GR::template NodeMap<int> tnm(to);
143
  typename GR::template ArcMap<int> tam(to);
144
  typename GR::template EdgeMap<int> tem(to);
145
  typename GR::Node tn;
146
  typename GR::Arc ta;
147
  typename GR::Edge te;
145 148

	
146
  SmartGraph::NodeMap<ListGraph::Node> nr(from);
147
  SmartGraph::ArcMap<ListGraph::Arc> ar(from);
148
  SmartGraph::EdgeMap<ListGraph::Edge> er(from);
149
  SmartGraph::NodeMap<typename GR::Node> nr(from);
150
  SmartGraph::ArcMap<typename GR::Arc> ar(from);
151
  SmartGraph::EdgeMap<typename GR::Edge> er(from);
149 152

	
150
  ListGraph::NodeMap<SmartGraph::Node> ncr(to);
151
  ListGraph::ArcMap<SmartGraph::Arc> acr(to);
152
  ListGraph::EdgeMap<SmartGraph::Edge> ecr(to);
153
  typename GR::template NodeMap<SmartGraph::Node> ncr(to);
154
  typename GR::template ArcMap<SmartGraph::Arc> acr(to);
155
  typename GR::template EdgeMap<SmartGraph::Edge> ecr(to);
153 156

	
154 157
  graphCopy(from, to).
155 158
    nodeMap(fnm, tnm).arcMap(fam, tam).edgeMap(fem, tem).
156 159
    nodeRef(nr).arcRef(ar).edgeRef(er).
... ...
@@ -183,16 +186,16 @@
183 186
    check((from.u(it) != from.v(it)) == (to.u(er[it]) != to.v(er[it])),
184 187
          "Wrong copy.");
185 188
  }
186 189

	
187
  for (ListGraph::NodeIt it(to); it != INVALID; ++it) {
190
  for (typename GR::NodeIt it(to); it != INVALID; ++it) {
188 191
    check(nr[ncr[it]] == it, "Wrong copy.");
189 192
  }
190 193

	
191
  for (ListGraph::ArcIt it(to); it != INVALID; ++it) {
194
  for (typename GR::ArcIt it(to); it != INVALID; ++it) {
192 195
    check(ar[acr[it]] == it, "Wrong copy.");
193 196
  }
194
  for (ListGraph::EdgeIt it(to); it != INVALID; ++it) {
197
  for (typename GR::EdgeIt it(to); it != INVALID; ++it) {
195 198
    check(er[ecr[it]] == it, "Wrong copy.");
196 199
  }
197 200
  check(tn == nr[fn], "Wrong copy.");
198 201
  check(ta == ar[fa], "Wrong copy.");
... ...
@@ -207,9 +210,12 @@
207 210
}
208 211

	
209 212

	
210 213
int main() {
211
  digraph_copy_test();
212
  graph_copy_test();
214
  digraph_copy_test<SmartDigraph>();
215
  digraph_copy_test<ListDigraph>();
216
  digraph_copy_test<StaticDigraph>();
217
  graph_copy_test<SmartGraph>();
218
  graph_copy_test<ListGraph>();
213 219

	
214 220
  return 0;
215 221
}
0 comments (0 inline)