COIN-OR::LEMON - Graph Library

source: lemon-0.x/src/test/test_tools.h @ 637:75ad3e24425e

Last change on this file since 637:75ad3e24425e was 574:7b0b12eb603b, checked in by Alpar Juttner, 21 years ago

* empty log message *

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 is 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///Adds a Petersen graph to \c G.
42
43///Adds a Petersen graph to \c G.
44///The nodes end edges will be listed in the return structure.
45template<class Graph> PetStruct<Graph> addPetersen(Graph &G,int num=5)
46{
47  PetStruct<Graph> n;
48
49  for(int i=0;i<num;i++) {
50    n.outer.push_back(G.addNode());
51    n.inner.push_back(G.addNode());
52  }
53
54 for(int i=0;i<num;i++) {
55   n.chords.push_back(G.addEdge(n.outer[i],n.inner[i]));
56   n.outcir.push_back(G.addEdge(n.outer[i],n.outer[(i+1)%5]));
57   n.incir.push_back(G.addEdge(n.inner[i],n.inner[(i+2)%5]));
58  }
59 return n;
60}
61
62
63
64#endif
Note: See TracBrowser for help on using the repository browser.