COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/test/test_tools.h @ 721:1df9b762269b

Last change on this file since 721:1df9b762269b was 721:1df9b762269b, checked in by Alpar Juttner, 20 years ago

Indenting.

File size: 1.6 KB
Line 
1#ifndef HUGO_TEST_TEST_TOOLS_H
2#define HUGO_TEST_TEST_TOOLS_H
3
4//! \ingroup misc
5//! \file
6//! \brief Some utility to write test programs.
7
8
9#include<iostream>
10#include<vector>
11
12///If \c rc is fail, writes an error message end exit.
13
14///If \c rc is fail, writes an error message end exit.
15///The error message contains the file name and the line number of the
16///source code in a standard from, which makes it possible to go there
17///using good source browsers like e.g. \c emacs.
18///
19///For example
20///\code check(0==1,"This is obviously false.");\endcode will
21///print this (and then exits).
22///\verbatim graph_test.cc:123: error: This is obviously false. \endverbatim
23#define check(rc, msg) \
24  if(!(rc)) { \
25    std::cerr << __FILE__ ":" << __LINE__ << ": error: " << msg << std::endl; \
26    exit(1); \
27  } else { } \
28
29///Structure returned by \ref addPetersen().
30
31///Structure returned by \ref addPetersen().
32///
33template<class Graph> struct PetStruct
34{
35  ///.
36  std::vector<typename Graph::Node> outer, inner;
37  ///.
38  std::vector<typename Graph::Edge> outcir, incir, chords;
39};
40
41
42
43///Adds a Petersen graph to \c G.
44
45///Adds a Petersen graph to \c G.
46///The nodes end edges will be listed in the return structure.
47
48template<typename Graph>
49PetStruct<Graph> addPetersen(Graph &G,int num=5)
50{
51  PetStruct<Graph> n;
52
53  for(int i=0;i<num;i++) {
54    n.outer.push_back(G.addNode());
55    n.inner.push_back(G.addNode());
56  }
57
58 for(int i=0;i<num;i++) {
59   n.chords.push_back(G.addEdge(n.outer[i],n.inner[i]));
60   n.outcir.push_back(G.addEdge(n.outer[i],n.outer[(i+1)%5]));
61   n.incir.push_back(G.addEdge(n.inner[i],n.inner[(i+2)%5]));
62  }
63 return n;
64}
65
66
67
68#endif
Note: See TracBrowser for help on using the repository browser.