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:
@@ -170,7 +170,7 @@ void ListCtrlTestCase::ItemRect()
|
|||||||
CPPUNIT_ASSERT( m_list->GetSubItemRect(0, 2, r) );
|
CPPUNIT_ASSERT( m_list->GetSubItemRect(0, 2, r) );
|
||||||
CPPUNIT_ASSERT_EQUAL( 40, r.GetWidth() );
|
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
|
#endif // wxHAS_LISTCTRL_COLUMN_ORDER
|
||||||
|
@@ -92,6 +92,17 @@ public:
|
|||||||
virtual int OnRun();
|
virtual int OnRun();
|
||||||
virtual int OnExit();
|
virtual int OnExit();
|
||||||
|
|
||||||
|
#ifdef __WXDEBUG__
|
||||||
|
virtual void OnAssertFailure(const wxChar *,
|
||||||
|
int,
|
||||||
|
const wxChar *,
|
||||||
|
const wxChar *,
|
||||||
|
const wxChar *)
|
||||||
|
{
|
||||||
|
throw TestAssertFailure();
|
||||||
|
}
|
||||||
|
#endif // __WXDEBUG__
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void List(Test *test, const string& parent = "") const;
|
void List(Test *test, const string& parent = "") const;
|
||||||
|
|
||||||
|
@@ -6,3 +6,24 @@
|
|||||||
(defined(__GNUC__) && (__GNUC__ >= 3))
|
(defined(__GNUC__) && (__GNUC__ >= 3))
|
||||||
#define wxHAVE_U_ESCAPE
|
#define wxHAVE_U_ESCAPE
|
||||||
#endif
|
#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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user