18 |
18 |
19 #include <lemon/concepts/digraph.h> |
19 #include <lemon/concepts/digraph.h> |
20 #include <lemon/list_graph.h> |
20 #include <lemon/list_graph.h> |
21 #include <lemon/smart_graph.h> |
21 #include <lemon/smart_graph.h> |
22 #include <lemon/full_graph.h> |
22 #include <lemon/full_graph.h> |
23 #include <lemon/hypercube_graph.h> |
|
24 |
23 |
25 #include "test_tools.h" |
24 #include "test_tools.h" |
26 #include "graph_test.h" |
25 #include "graph_test.h" |
27 |
26 |
28 using namespace lemon; |
27 using namespace lemon; |
110 } |
109 } |
111 } |
110 } |
112 |
111 |
113 } |
112 } |
114 |
113 |
115 void checkHypercubeDigraph(int dim) { |
|
116 DIGRAPH_TYPEDEFS(HypercubeDigraph); |
|
117 |
|
118 HypercubeDigraph G(dim); |
|
119 checkGraphNodeList(G, 1 << dim); |
|
120 checkGraphArcList(G, (1 << dim) * dim); |
|
121 |
|
122 Node n = G.nodeFromId(dim); |
|
123 |
|
124 checkGraphOutArcList(G, n, dim); |
|
125 for (OutArcIt a(G, n); a != INVALID; ++a) |
|
126 check(G.source(a) == n && |
|
127 G.id(G.target(a)) == G.id(n) ^ (1 << G.dimension(a)), |
|
128 "Wrong arc"); |
|
129 |
|
130 checkGraphInArcList(G, n, dim); |
|
131 for (InArcIt a(G, n); a != INVALID; ++a) |
|
132 check(G.target(a) == n && |
|
133 G.id(G.source(a)) == G.id(n) ^ (1 << G.dimension(a)), |
|
134 "Wrong arc"); |
|
135 |
|
136 checkGraphConArcList(G, (1 << dim) * dim); |
|
137 |
|
138 checkNodeIds(G); |
|
139 checkArcIds(G); |
|
140 checkGraphNodeMap(G); |
|
141 checkGraphArcMap(G); |
|
142 } |
|
143 |
|
144 |
|
145 void checkConcepts() { |
114 void checkConcepts() { |
146 { // Checking digraph components |
115 { // Checking digraph components |
147 checkConcept<BaseDigraphComponent, BaseDigraphComponent >(); |
116 checkConcept<BaseDigraphComponent, BaseDigraphComponent >(); |
148 |
117 |
149 checkConcept<IDableDigraphComponent<>, |
118 checkConcept<IDableDigraphComponent<>, |
172 checkConcept<ClearableDigraphComponent<>, SmartDigraph>(); |
141 checkConcept<ClearableDigraphComponent<>, SmartDigraph>(); |
173 } |
142 } |
174 { // Checking FullDigraph |
143 { // Checking FullDigraph |
175 checkConcept<Digraph, FullDigraph>(); |
144 checkConcept<Digraph, FullDigraph>(); |
176 } |
145 } |
177 { // Checking HypercubeDigraph |
|
178 checkConcept<Digraph, HypercubeDigraph>(); |
|
179 } |
|
180 } |
146 } |
181 |
147 |
182 template <typename Digraph> |
148 template <typename Digraph> |
183 void checkDigraphValidity() { |
149 void checkDigraphValidity() { |
184 TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); |
150 TEMPLATE_DIGRAPH_TYPEDEFS(Digraph); |