X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/604fba2d345b42b05acba9c70e358aad510775b0..9e1da4827a0ec18f9766d664b9af12c25e3f71fb:/tests/misc/misctests.cpp?ds=inline diff --git a/tests/misc/misctests.cpp b/tests/misc/misctests.cpp index 75b1b55c9d..d50f0a2460 100644 --- a/tests/misc/misctests.cpp +++ b/tests/misc/misctests.cpp @@ -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 /////////////////////////////////////////////////////////////////////////////// // ---------------------------------------------------------------------------- @@ -19,6 +20,10 @@ #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 +} +