CPPUNIT_ASSERT( m_list->GetSubItemRect(0, 2, r) );
CPPUNIT_ASSERT_EQUAL( 40, r.GetWidth() );
- CPPUNIT_ASSERT( !m_list->GetSubItemRect(0, 3, r) );
+ WX_ASSERT_FAILS_WITH_ASSERT( m_list->GetSubItemRect(0, 3, r) );
}
#endif // wxHAS_LISTCTRL_COLUMN_ORDER
virtual int OnRun();
virtual int OnExit();
+#ifdef __WXDEBUG__
+ virtual void OnAssertFailure(const wxChar *,
+ int,
+ const wxChar *,
+ const wxChar *,
+ const wxChar *)
+ {
+ throw TestAssertFailure();
+ }
+#endif // __WXDEBUG__
+
private:
void List(Test *test, const string& parent = "") const;
(defined(__GNUC__) && (__GNUC__ >= 3))
#define wxHAVE_U_ESCAPE
#endif
+
+// thrown when assert fails in debug build
+class TestAssertFailure { };
+
+// macro to use for the functions which are supposed to fail an assertion
+#ifdef __WXDEBUG__
+ // some old cppunit versions don't define CPPUNIT_ASSERT_THROW so roll our
+ // own
+ #define WX_ASSERT_FAILS_WITH_ASSERT(cond) \
+ { \
+ bool throwsAssert = false; \
+ try { cond ; } \
+ catch ( const TestAssertFailure& ) { throwsAssert = true; } \
+ if ( !throwsAssert ) \
+ CPPUNIT_FAIL("expected assertion not generated"); \
+ }
+#else
+ // there are no assertions in non-debug build so just check that it fails
+ #define WX_ASSERT_FAILS_WITH_ASSERT(cond) CPPUNIT_ASSERT(!(cond))
+#endif
+