]> git.saurik.com Git - wxWidgets.git/commitdiff
don't show assert message boxes in debug build but throw an exception if an assert...
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Dec 2008 02:28:55 +0000 (02:28 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 21 Dec 2008 02:28:55 +0000 (02:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

tests/controls/listctrltest.cpp
tests/test.cpp
tests/testprec.h

index e6bb46398637db69b6b6cb0c4e144ae87188b98b..8ad9e972a3e7fffb0171cad59f45578490ada1f1 100644 (file)
@@ -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
index cc84f279253fa7207dab7922a47d4b37aecb59b6..9b1f65d0650f92a83ac344e21b671b273542a6c6 100644 (file)
@@ -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;
 
index b1799321f149dc6deea2d9114962c5862eb84d61..84edfc45eb67a2306b9ce2bbe59dd9c8a7ca4fb2 100644 (file)
@@ -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
+