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