CPUnit 0.95 (beta)
The REAL C++ port of JUnit.
|
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