1 /* -*- C++ -*- |
|
2 * src/test/graph_test.h - Part of LEMON, a generic C++ optimization library |
|
3 * |
|
4 * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport |
|
5 * (Egervary Research Group on Combinatorial Optimization, EGRES). |
|
6 * |
|
7 * Permission to use, modify and distribute this software is granted |
|
8 * provided that this copyright notice appears in all copies. For |
|
9 * precise terms see the accompanying LICENSE file. |
|
10 * |
|
11 * This software is provided "AS IS" with no warranty of any kind, |
|
12 * express or implied, and with no claim as to its suitability for any |
|
13 * purpose. |
|
14 * |
|
15 */ |
|
16 #ifndef LEMON_TEST_GRAPH_TEST_H |
|
17 #define LEMON_TEST_GRAPH_TEST_H |
|
18 |
|
19 |
|
20 #include "test_tools.h" |
|
21 |
|
22 //! \ingroup misc |
|
23 //! \file |
|
24 //! \brief Some utility and test cases to test graph classes. |
|
25 namespace lemon { |
|
26 |
|
27 template<class Graph> void checkGraphNodeList(Graph &G, int nn) |
|
28 { |
|
29 typename Graph::NodeIt n(G); |
|
30 for(int i=0;i<nn;i++) { |
|
31 check(n!=INVALID,"Wrong Node list linking."); |
|
32 ++n; |
|
33 } |
|
34 check(n==INVALID,"Wrong Node list linking."); |
|
35 } |
|
36 |
|
37 template<class Graph> |
|
38 void checkGraphEdgeList(Graph &G, int nn) |
|
39 { |
|
40 typedef typename Graph::EdgeIt EdgeIt; |
|
41 |
|
42 EdgeIt e(G); |
|
43 for(int i=0;i<nn;i++) { |
|
44 check(e!=INVALID,"Wrong Edge list linking."); |
|
45 ++e; |
|
46 } |
|
47 check(e==INVALID,"Wrong Edge list linking."); |
|
48 } |
|
49 |
|
50 template<class Graph> |
|
51 void checkGraphOutEdgeList(Graph &G, typename Graph::Node n, int nn) |
|
52 { |
|
53 typename Graph::OutEdgeIt e(G,n); |
|
54 for(int i=0;i<nn;i++) { |
|
55 check(e!=INVALID,"Wrong OutEdge list linking."); |
|
56 check(n==G.source(e), "Wrong OutEdge list linking."); |
|
57 ++e; |
|
58 } |
|
59 check(e==INVALID,"Wrong OutEdge list linking."); |
|
60 } |
|
61 |
|
62 template<class Graph> void |
|
63 checkGraphInEdgeList(Graph &G, typename Graph::Node n, int nn) |
|
64 { |
|
65 typename Graph::InEdgeIt e(G,n); |
|
66 for(int i=0;i<nn;i++) { |
|
67 check(e!=INVALID,"Wrong InEdge list linking."); |
|
68 check(n==G.target(e), "Wrong InEdge list linking."); |
|
69 ++e; |
|
70 } |
|
71 check(e==INVALID,"Wrong InEdge list linking."); |
|
72 } |
|
73 |
|
74 template <class Graph> |
|
75 void checkGraph() { |
|
76 const int num = 5; |
|
77 Graph G; |
|
78 addPetersen(G, num); |
|
79 bidirGraph(G); |
|
80 checkBidirPetersen(G, num); |
|
81 } |
|
82 |
|
83 ///\file |
|
84 ///\todo Check target(), source() as well; |
|
85 |
|
86 |
|
87 } //namespace lemon |
|
88 |
|
89 |
|
90 #endif |
|