# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1277215980 -7200
# Node ID b0fe90eb04d1169eaa30410660a0d18803e47e56
# Parent 8087cf69e6643da496a4bf4ed3e1f473fdf1cc26
Improve graph_copy_test.cc
diff --git a/test/graph_copy_test.cc b/test/graph_copy_test.cc
a
|
b
|
|
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 | |
… |
… |
|
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 | |
… |
… |
|
51 | 53 | if (i == 0 && j == 0) fa = arc; |
52 | 54 | } |
53 | 55 | } |
| 56 | |
| 57 | // Test digraph copy |
| 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; |
54 | 63 | |
55 | | // 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; |
| 64 | SmartDigraph::NodeMap<typename GR::Node> nr(from); |
| 65 | SmartDigraph::ArcMap<typename GR::Arc> er(from); |
61 | 66 | |
62 | | SmartDigraph::NodeMap<ListDigraph::Node> nr(from); |
63 | | SmartDigraph::ArcMap<ListDigraph::Arc> er(from); |
64 | | |
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). |
… |
… |
|
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."); |
… |
… |
|
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 | |
… |
… |
|
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). |
… |
… |
|
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."); |
… |
… |
|
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 | } |