35 for (typename Graph::NodeIt it(graph); it != INVALID; ++it) { |
37 for (typename Graph::NodeIt it(graph); it != INVALID; ++it) { |
36 check(countOutEdges(graph, it) == 3, "Wrong out degree number."); |
38 check(countOutEdges(graph, it) == 3, "Wrong out degree number."); |
37 check(countInEdges(graph, it) == 3, "Wrong in degree number."); |
39 check(countInEdges(graph, it) == 3, "Wrong in degree number."); |
38 } |
40 } |
39 } |
41 } |
|
42 |
|
43 template <typename Graph> |
|
44 void checkFindEdge() { |
|
45 typedef typename Graph::Node Node; |
|
46 typedef typename Graph::Edge Edge; |
|
47 typedef typename Graph::NodeIt NodeIt; |
|
48 typedef typename Graph::EdgeIt EdgeIt; |
|
49 Graph graph; |
|
50 srand(time(0)); |
|
51 for (int i = 0; i < 10; ++i) { |
|
52 graph.addNode(); |
|
53 } |
|
54 DescriptorMap<Graph, Node> nodes(graph); |
|
55 typename DescriptorMap<Graph, Node>::InverseMap invNodes(nodes); |
|
56 for (int i = 0; i < 100; ++i) { |
|
57 int src = (int)(rand() / (RAND_MAX + 1.0) * invNodes.size()); |
|
58 int trg = (int)(rand() / (RAND_MAX + 1.0) * invNodes.size()); |
|
59 graph.addEdge(invNodes[src], invNodes[trg]); |
|
60 } |
|
61 typename Graph::template EdgeMap<bool> found(graph, false); |
|
62 DescriptorMap<Graph, Edge> edges(graph); |
|
63 for (NodeIt src(graph); src != INVALID; ++src) { |
|
64 for (NodeIt trg(graph); trg != INVALID; ++trg) { |
|
65 for (ConEdgeIt<Graph> con(graph, src, trg); con != INVALID; ++con) { |
|
66 check(graph.source(con) == src, "Wrong source."); |
|
67 check(graph.target(con) == trg, "Wrong target."); |
|
68 check(found[con] == false, "The edge found already."); |
|
69 found[con] = true; |
|
70 } |
|
71 } |
|
72 } |
|
73 for (EdgeIt it(graph); it != INVALID; ++it) { |
|
74 check(found[it] == true, "The edge is not found."); |
|
75 } |
|
76 } |
40 |
77 |
41 } //namespace lemon |
78 } //namespace lemon |
42 |
79 |
43 |
80 |
44 #endif |
81 #endif |