CPUnit 0.95 (beta)
The REAL C++ port of JUnit.
/Users/Shared/Development/cpp/sourceforge/cpunit_095/src/cpunit.hpp
Go to the documentation of this file.
00001 /*
00002   Copyright (c) 2011 Daniel Bakkelund.
00003   All rights reserved.
00004 
00005   Redistribution and use in source and binary forms, with or without
00006   modification, are permitted provided that the following conditions
00007   are met:
00008   1. Redistributions of source code must retain the above copyright
00009   notice, this list of conditions and the following disclaimer.
00010   2. Redistributions in binary form must reproduce the above copyright
00011   notice, this list of conditions and the following disclaimer in the
00012   documentation and/or other materials provided with the distribution.
00013   3. Neither the name of the copyright holders nor the names of its
00014   contributors may be used to endorse or promote products derived from
00015   this software without specific prior written permission.
00016 
00017   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00018   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00019   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00020   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00021   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00022   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00023   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00024   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00025   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00026   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
00027   THE POSSIBILITY OF SUCH DAMAGE.
00028 */
00029 
00030 #ifndef CPUNIT_HPP
00031 #define CPUNIT_HPP
00032 
00033 #include "cpunit_Assert.hpp"
00034 #include "cpunit_FuncTestRegistrar.hpp"
00035 #include "cpunit_ExceptionTestRegistrar.hpp"
00036 #include "cpunit_FixtureRegistrar.hpp"
00037 
00041 #define CPUNIT_STRINGIFY(x) #x
00042 
00047 #define CPUNIT_GTEST(x) CPUNIT_TEST(,x)
00048 
00054 #define CPUNIT_TEST(n,f)                  \
00055   void f();                      \
00056   namespace { static ::cpunit::FuncTestRegistrar __##f##_registrar (CPUNIT_STRINGIFY(n), CPUNIT_STRINGIFY(f), __FILE__, __LINE__, &n::f);  } \
00057   void f()
00058 
00065 #define CPUNIT_GTEST_EX_ANY(f) CPUNIT_TEST_EX_ANY(,f)
00066 
00073 #define CPUNIT_GTEST_EX(f,E) CPUNIT_TEST_EX(,f,E)
00074 
00082 #define CPUNIT_TEST_EX_ANY(n,f) CPUNIT_TEST_EX(n, f, cpunit::AnyType)
00083 
00091 #define CPUNIT_TEST_EX(n,f,E)                \
00092   void f();                      \
00093   namespace { static ::cpunit::ExceptionTestRegistrar<E> __##f##_registrar (CPUNIT_STRINGIFY(n), CPUNIT_STRINGIFY(f), __FILE__, __LINE__, &n::f);  } \
00094   void f()
00095 
00100 #define CPUNIT_SET_UP(n)                  \
00101   void set_up();                    \
00102   namespace { static ::cpunit::FixtureRegistrar __set_up_registrar (CPUNIT_STRINGIFY(n), "set_up", __FILE__, __LINE__, &n::set_up, cpunit::FixtureRegistrar::SET_UP);  } \
00103   void set_up()
00104 
00109 #define CPUNIT_TEAR_DOWN(n)                  \
00110   void tear_down();                    \
00111   namespace { static ::cpunit::FixtureRegistrar __tear_down_registrar (CPUNIT_STRINGIFY(n), "tear_down", __FILE__, __LINE__, &n::tear_down, cpunit::FixtureRegistrar::TEAR_DOWN);  } \
00112   void tear_down()
00113 
00114 #include "cpunit_impl_StrCat.hpp"
00115 
00126 #define CPUNIT_STR(x) (::cpunit::impl::StrCat()<<x).str()
00127 
00132 #define CPUNIT_FAIL()    cpunit::fail (CPUNIT_STR(" At line " << __LINE__  << " of " << __FILE__))
00133 
00139 #define CPUNIT_FAIL1(m)    cpunit::fail (CPUNIT_STR(" At line " << __LINE__  << " of " << __FILE__ << ": " << m))
00140 
00147 #define CPUNIT_ASSERT(x)    cpunit::assert_true (CPUNIT_STR("At line " << __LINE__  << " of " << __FILE__ << " Stmt: '" << #x << '\''), x)
00148 
00156 #define CPUNIT_ASSERT1(m,x) cpunit::assert_true (CPUNIT_STR("At line " << __LINE__  << " of " << __FILE__ << ": " << m << " Stmt: '" << #x << '\''), x)
00157 
00164 #define CPUNIT_DISPROVE(x)    cpunit::assert_false(CPUNIT_STR("At line " << __LINE__  << " of " << __FILE__ << " Stmt: '" << #x << '\''), x)
00165 
00173 #define CPUNIT_DISPROVE1(m,x) cpunit::assert_false(CPUNIT_STR("At line " << __LINE__  << " of " << __FILE__ << ": " << m << " Stmt: '" << #x << '\''), x)
00174 
00175 #endif // CPUNIT_HPP
00176 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines