Fix SCons 1.2.0 build failure
[senf.git] / Utils / auto_unit_test.hh
1 // $Id$
2 //
3 // Copyright (C) 2007
4 // Fraunhofer Institute for Open Communication Systems (FOKUS)
5 // Competence Center NETwork research (NET), St. Augustin, GERMANY
6 //     Stefan Bund <g0dil@berlios.de>
7 //
8 // This program is free software; you can redistribute it and/or modify
9 // it under the terms of the GNU General Public License as published by
10 // the Free Software Foundation; either version 2 of the License, or
11 // (at your option) any later version.
12 //
13 // This program is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the
20 // Free Software Foundation, Inc.,
21 // 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22
23 /** \file
24     \brief Boost.Test auto unit test compatibility across Boost V 1.33 and 1.34
25
26     This header file will allows to consistently use the Boost Version 1.33 syntax for defining auto
27     unit tests. If the available Boost version is 1.34, this file will automatically take care of
28     any necessary workarounds.
29
30     So, instead of <tt>\#include <boost/test/auto_unit_test.hpp></tt>, you should always write
31     <pre>
32     \#include "../Utils/auto_unit_test.hh"
33     </pre> (with possibliy adjusted path).
34  */
35
36 #ifndef HH_SENF_Utils_auto_unit_test_
37 #define HH_SENF_Utils_auto_unit_test_ 1
38
39 // Custom includes
40 #include <iostream>
41 #include <boost/version.hpp>
42
43 //#include "auto_unit_test.mpp"
44 ///////////////////////////////hh.p////////////////////////////////////////
45
46 #if BOOST_VERSION >= 103400
47
48 #   define BOOST_AUTO_UNIT_TEST BOOST_AUTO_TEST_CASE
49
50 #endif
51
52 #include <boost/test/auto_unit_test.hpp>
53
54 /** \defgroup unittest Boost.Test extensions
55
56     This module defines some additional extensions to Boost.Test
57  */
58
59 /** \brief Check for compile failure
60
61     COMPILE_FAIL() is used to check, that a certain piece of code will produce a compile time
62     failure.
63
64     \code
65     #ifdef COMPILE_CHECK
66
67     COMPILE_FAIL(foo)
68     {
69         // fails to compile ....
70         int x = "foo";
71     }
72     
73     COMPILE_FAIL(bar)
74     { ... }
75
76     #endif
77     \endcode
78
79     This check is performed by the extended unit-test builder in \c senfscons.
80     
81     \ingroup unittest
82  */
83 #define COMPILE_FAIL(n) void n()
84
85 /** \brief Show exception information
86
87     \ref SENF_CHECK_NO_THROW() is an extension to \c BOOST_CHECK_NO_THROW() which will write out the
88     unabridged exception information when an exception is thrown in addition to signaling an error.
89
90     \ingroup unittest
91  */
92 #define SENF_CHECK_NO_THROW(expr)                                                                 \
93     BOOST_CHECK_NO_THROW(                                                                         \
94         try { expr ; }                                                                            \
95         catch (std::exception & e) { std::cerr << e.what() << std::endl; throw; } )
96
97 ///////////////////////////////hh.e////////////////////////////////////////
98 //#include "auto_unit_test.cci"
99 //#include "auto_unit_test.ct"
100 //#include "auto_unit_test.cti"
101 #endif
102
103 \f
104 // Local Variables:
105 // mode: c++
106 // fill-column: 100
107 // comment-column: 40
108 // c-file-style: "senf"
109 // indent-tabs-mode: nil
110 // ispell-local-dictionary: "american"
111 // compile-command: "scons -u test"
112 // End: