1e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* 2e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Copyright (c) 2003, 2004 3e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Zdenek Nemec 4e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 5e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * This material is provided "as is", with absolutely no warranty expressed 6e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * or implied. Any use is at your own risk. 7e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 8e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to use or copy this software for any purpose is hereby granted 9e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * without fee, provided the above notices are retained on all copies. 10e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Permission to modify the code and to distribute modified code is granted, 11e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * provided the above notices are retained, and a notice that the code was 12e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * modified is included with the above copyright notice. 13e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * 14e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott */ 15e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 16e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* $Id$ */ 17e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 18e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifndef _CPPUNITMPFR_H_ 19e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define _CPPUNITMPFR_H_ 20e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 21e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if 0 22e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_NS CppUnitMini 23e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else 24e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_NS 25e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 26e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 27e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#include <string.h> 28e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 29e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if 0 30e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottnamespace CPPUNIT_NS 31e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott{ 32e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 33e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott class Reporter { 34e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public: 35e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual ~Reporter() {} 36e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void error(const char * /*macroName*/, const char * /*in_macro*/, const char * /*in_file*/, int /*in_line*/) {} 37e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void message( const char * /*msg*/ ) {} 38e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void progress( const char * /*in_className*/, const char * /*in_testName*/, bool /*ignored*/, bool /* explicit */) {} 39e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void end() {} 40e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void printSummary() {} 41e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott }; 42e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 43e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott class TestFixture { 44e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public: 45e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual ~TestFixture() {} 46e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 47e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //! \brief Set up context before running a test. 48e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void setUp() {} 49e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 50e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott //! Clean up after the test run. 51e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void tearDown() {} 52e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott }; 53e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 54e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott class TestCase : public TestFixture { 55e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott public: 56e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott TestCase() { registerTestCase(this); } 57e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 58e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void setUp() { m_failed = false; } 59e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static int run(Reporter *in_reporter = 0, const char *in_testName = "", bool invert = false); 60e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott int numErrors() { return m_numErrors; } 61e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static void registerTestCase(TestCase *in_testCase); 62e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 63e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void myRun(const char * /*in_name*/, bool /*invert*/ = false) {} 64e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 65e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void error(const char *in_macroName, const char *in_macro, const char *in_file, int in_line) { 66e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m_failed = true; 67e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (m_reporter) { 68e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m_reporter->error(in_macroName, in_macro, in_file, in_line); 69e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 70e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 71e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 72e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static void message(const char *msg) { 73e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (m_reporter) { 74e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m_reporter->message(msg); 75e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 76e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 77e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 78e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool equalDoubles(double in_expected, double in_real, double in_maxErr) { 79e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott double diff = in_expected - in_real; 80e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (diff < 0.) { 81e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott diff = -diff; 82e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 83e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return diff < in_maxErr; 84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 85e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 86e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void progress(const char *in_className, const char *in_functionName, bool ignored, bool explicitTest) { 87e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++m_numTests; 88e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (m_reporter) { 89e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m_reporter->progress(in_className, in_functionName, ignored, explicitTest); 90e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 91e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 92e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 93e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool shouldRunThis(const char *in_desiredTest, const char *in_className, const char *in_functionName, 94e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool invert, bool explicit_test, bool &do_progress) { 95e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if ((in_desiredTest) && (in_desiredTest[0] != '\0')) { 96e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott do_progress = false; 97e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char *ptr = strstr(in_desiredTest, "::"); 98e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (ptr) { 99e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool match = (strncmp(in_desiredTest, in_className, strlen(in_className)) == 0) && 100e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott (strncmp(ptr + 2, in_functionName, strlen(in_functionName)) == 0); 101e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott // Invert shall not make explicit test run: 102e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return invert ? (match ? !match : !explicit_test) 103e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : match; 104e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 105e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool match = (strcmp(in_desiredTest, in_className) == 0); 106e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott do_progress = match; 107e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return !explicit_test && (match == !invert); 108e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 109e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott do_progress = true; 110e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return !explicit_test; 111e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 112e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 113e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void tearDown() { 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (m_failed) 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ++m_numErrors; 116e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott m_reporter->end(); 117e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 118e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 119e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott protected: 120e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static int m_numErrors; 121e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static int m_numTests; 122e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 123e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott private: 124e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static TestCase *m_root; 125e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott TestCase *m_next; 126e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool m_failed; 127e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 128e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static Reporter *m_reporter; 129e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott }; 130e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if 0 131e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott} 132e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 133e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 134e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (CPPUNIT_MINI_HIDE_UNUSED_VARIABLE) 135e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# if defined (_MSC_VER) 136e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_MINI_HIDE_UNUSED_VARIABLE(v) (v); 137e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# else 138e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_MINI_HIDE_UNUSED_VARIABLE(v) 139e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# endif 140e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 141e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 142e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_TEST_SUITE(X) \ 143e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott typedef CPPUNIT_NS::TestCase Base; \ 144e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott virtual void myRun(const char *in_name, bool invert = false) { \ 145e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott const char *className = #X; CPPUNIT_MINI_HIDE_UNUSED_VARIABLE(className) \ 146e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool ignoring = false; CPPUNIT_MINI_HIDE_UNUSED_VARIABLE(ignoring) 147e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined CPPUNIT_MINI_USE_EXCEPTIONS 149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_TEST_BASE(X, Y) \ 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { \ 151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool do_progress; \ 152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool shouldRun = shouldRunThis(in_name, className, #X, invert, Y, do_progress); \ 153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (shouldRun || do_progress) { \ 154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott setUp(); \ 155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott progress(className, #X, ignoring || !shouldRun, !ignoring && Y); \ 156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (shouldRun && !ignoring) { \ 157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott try { \ 158e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott X(); \ 159e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } \ 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott catch(...) { \ 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("Test Failed: An Exception was thrown.", #X, __FILE__, __LINE__); \ 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } \ 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } \ 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott tearDown(); \ 165e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } \ 166e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 167e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else 168e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott# define CPPUNIT_TEST_BASE(X, Y) \ 169e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { \ 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool do_progress; \ 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott bool shouldRun = shouldRunThis(in_name, className, #X, invert, Y, do_progress); \ 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (shouldRun || do_progress) { \ 173e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott setUp(); \ 174e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott progress(className, #X, ignoring || !shouldRun, !ignoring && Y); \ 175e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (shouldRun && !ignoring) \ 176e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott X(); \ 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott tearDown(); \ 178e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } \ 179e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 180e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 181e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 182e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_TEST(X) CPPUNIT_TEST_BASE(X, false) 183e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_EXPLICIT_TEST(X) CPPUNIT_TEST_BASE(X, true) 184e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 185e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_IGNORE \ 186e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ignoring = true 187e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 188e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_STOP_IGNORE \ 189e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ignoring = false 190e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 191e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_TEST_SUITE_END() } 192e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 193e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_TEST_SUITE_REGISTRATION(X) static X local 194e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 195e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_CHECK(X) \ 196e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!(X)) { \ 197e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("CPPUNIT_CHECK", #X, __FILE__, __LINE__); \ 198e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 199e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 200e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_ASSERT(X) \ 201e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!(X)) { \ 202e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("CPPUNIT_ASSERT", #X, __FILE__, __LINE__); \ 203e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return; \ 204e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 205e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 206e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_FAIL { \ 207e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("CPPUNIT_FAIL", "", __FILE__, __LINE__); \ 208e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return; \ 209e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 210e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_ASSERT_EQUAL(X, Y) \ 212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if ((X) != (Y)) { \ 213e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("CPPUNIT_ASSERT_EQUAL", #X","#Y, __FILE__, __LINE__); \ 214e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return; \ 215e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 216e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_ASSERT_DOUBLES_EQUAL(X, Y, Z) \ 218e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott if (!equalDoubles((X), (Y), (Z))) { \ 219e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott Base::error("CPPUNIT_ASSERT_DOUBLES_EQUAL", #X","#Y","#Z, __FILE__, __LINE__); \ 220e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott return; \ 221e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott } 222e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#define CPPUNIT_MESSAGE(m) CPPUNIT_NS::TestCase::message(m) 224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif 226