COIN-OR::LEMON - Graph Library

source: lemon-0.x/test/graph_test.h @ 1768:1e2e0238e7c8

Last change on this file since 1768:1e2e0238e7c8 was 1728:eb8bb91ba9e2, checked in by Balazs Dezso, 19 years ago

Updating tests

File size: 2.7 KB
Line 
1/* -*- C++ -*-
2 * 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#include <lemon/graph_utils.h>
20#include "test_tools.h"
21
22//! \ingroup misc
23//! \file
24//! \brief Some utility and test cases to test graph classes.
25namespace 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  template <class Graph>
84  void checkGraphIterators(const Graph& graph) {
85    typedef typename Graph::Node Node;
86    typedef typename Graph::NodeIt NodeIt;
87    typedef typename Graph::Edge Edge;
88    typedef typename Graph::EdgeIt EdgeIt;
89    typedef typename Graph::InEdgeIt InEdgeIt;
90    typedef typename Graph::OutEdgeIt OutEdgeIt;
91    typedef ConEdgeIt<Graph> ConEdgeIt;
92   
93    for (NodeIt it(graph); it != INVALID; ++it) {}
94  }
95
96  ///\file
97  ///\todo Check target(), source() as well;
98
99 
100} //namespace lemon
101
102
103#endif
Note: See TracBrowser for help on using the repository browser.