don't show assert message boxes in debug build but throw an exception if an assert unexpectedly fails; do check that expected asserts are generated
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
6756186271
commit
0468a58a4b
@ -170,7 +170,7 @@ void ListCtrlTestCase::ItemRect()
|
||||
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
|
||||
|
@ -92,6 +92,17 @@ public:
|
||||
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;
|
||||
|
||||
|
@ -6,3 +6,24 @@
|
||||
(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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user