]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/misc/misctests.cpp
using button impl
[wxWidgets.git] / tests / misc / misctests.cpp
index 75b1b55c9d9df32f844c2aa8770df40e28b8e8aa..d50f0a2460dd519c91658ac42a7dda1104a82df1 100644 (file)
@@ -1,10 +1,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Name:        tests/misc/misctests.cpp
 // Purpose:     test miscellaneous stuff
-// Author:      Peter Most
+// Author:      Peter Most, Vadim Zeitlin
 // Created:     2008-07-10
 // RCS-ID:      $Id$
 // Copyright:   (c) 2008 Peter Most
+//              (c) 2009 Vadim Zeitlin
 ///////////////////////////////////////////////////////////////////////////////
 
 // ----------------------------------------------------------------------------
 
 #include "wx/defs.h"
 
+// just some classes using wxRTTI for wxStaticCast() test
+#include "wx/tarstrm.h"
+#include "wx/zipstrm.h"
+
 // ----------------------------------------------------------------------------
 // test class
 // ----------------------------------------------------------------------------
@@ -30,10 +35,14 @@ public:
 
 private:
     CPPUNIT_TEST_SUITE( MiscTestCase );
+        CPPUNIT_TEST( Assert );
         CPPUNIT_TEST( Delete );
+        CPPUNIT_TEST( StaticCast );
     CPPUNIT_TEST_SUITE_END();
 
+    void Assert();
     void Delete();
+    void StaticCast();
 
     DECLARE_NO_COPY_CLASS(MiscTestCase)
 };
@@ -41,9 +50,32 @@ private:
 // register in the unnamed registry so that these tests are run by default
 CPPUNIT_TEST_SUITE_REGISTRATION( MiscTestCase );
 
-// also include in it's own registry so that these tests can be run alone
+// also include in its own registry so that these tests can be run alone
 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MiscTestCase, "MiscTestCase" );
 
+namespace
+{
+
+bool AssertIfOdd(int n)
+{
+    wxCHECK_MSG( !(n % 2), false, "parameter must be even" );
+
+    return true;
+}
+
+} // anonymous namespace
+
+void MiscTestCase::Assert()
+{
+    AssertIfOdd(0);
+    WX_ASSERT_FAILS_WITH_ASSERT(AssertIfOdd(1));
+
+    // doesn't fail any more
+    wxAssertHandler_t oldHandler = wxSetAssertHandler(NULL);
+    AssertIfOdd(17);
+    wxSetAssertHandler(oldHandler);
+}
+
 void MiscTestCase::Delete()
 {
     // Allocate some arbitrary memory to get a valid pointer:
@@ -69,3 +101,35 @@ void MiscTestCase::Delete()
 #endif
 }
 
+namespace
+{
+
+// helper function used just to avoid warnings about value computed not being
+// used in WX_ASSERT_FAILS_WITH_ASSERT() in StaticCast() below
+bool IsNull(void *p)
+{
+    return p == NULL;
+}
+
+} // anonymous namespace
+
+void MiscTestCase::StaticCast()
+{
+#if wxUSE_TARSTREAM
+    wxTarEntry tarEntry;
+    CPPUNIT_ASSERT( wxStaticCast(&tarEntry, wxArchiveEntry) );
+
+    wxArchiveEntry *entry = &tarEntry;
+    CPPUNIT_ASSERT( wxStaticCast(entry, wxTarEntry) );
+
+#if wxUSE_ZIPSTREAM
+    wxZipEntry zipEntry;
+    entry = &zipEntry;
+    CPPUNIT_ASSERT( wxStaticCast(entry, wxZipEntry) );
+    WX_ASSERT_FAILS_WITH_ASSERT( IsNull(wxStaticCast(&zipEntry, wxTarEntry)) );
+#endif // wxUSE_ZIPSTREAM
+
+    WX_ASSERT_FAILS_WITH_ASSERT( IsNull(wxStaticCast(entry, wxTarEntry)) );
+#endif // wxUSE_TARSTREAM
+}
+