src/test/test_tools.h
author deba
Wed, 08 Sep 2004 12:06:45 +0000
changeset 822 88226d9fe821
parent 721 1df9b762269b
child 825 738abd9d1262
permissions -rw-r--r--
The MapFactories have been removed from the code because
if we use macros then they increases only the complexity.

The pair iterators of the maps are separeted from the maps.

Some macros and comments has been changed.
     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 ///
    24 ///\todo It should be in \c error.h
    25 #define check(rc, msg) \
    26   if(!(rc)) { \
    27     std::cerr << __FILE__ ":" << __LINE__ << ": error: " << msg << std::endl; \
    28     exit(1); \
    29   } else { } \
    30 
    31 ///Structure returned by \ref addPetersen().
    32 
    33 ///Structure returned by \ref addPetersen().
    34 ///
    35 template<class Graph> struct PetStruct
    36 {
    37   ///.
    38   std::vector<typename Graph::Node> outer, inner;
    39   ///.
    40   std::vector<typename Graph::Edge> outcir, incir, chords;
    41 };
    42 
    43 
    44 
    45 ///Adds a Petersen graph to \c G.
    46 
    47 ///Adds a Petersen graph to \c G.
    48 ///The nodes end edges will be listed in the return structure.
    49 
    50 template<typename Graph>
    51 PetStruct<Graph> addPetersen(Graph &G,int num=5)
    52 {
    53   PetStruct<Graph> n;
    54 
    55   for(int i=0;i<num;i++) {
    56     n.outer.push_back(G.addNode());
    57     n.inner.push_back(G.addNode());
    58   }
    59 
    60  for(int i=0;i<num;i++) {
    61    n.chords.push_back(G.addEdge(n.outer[i],n.inner[i]));
    62    n.outcir.push_back(G.addEdge(n.outer[i],n.outer[(i+1)%5]));
    63    n.incir.push_back(G.addEdge(n.inner[i],n.inner[(i+2)%5]));
    64   }
    65  return n;
    66 }
    67 
    68 
    69 
    70 #endif