X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/657a8a359826e46a7fc458216403f54deca34989..bbd55ff9564dcaf1a5d2ee93d789c4d656baabef:/tests/misc/misctests.cpp diff --git a/tests/misc/misctests.cpp b/tests/misc/misctests.cpp index 3ead0b38ec..25459a11c9 100644 --- a/tests/misc/misctests.cpp +++ b/tests/misc/misctests.cpp @@ -20,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 // ---------------------------------------------------------------------------- @@ -33,10 +37,12 @@ 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) }; @@ -50,9 +56,11 @@ CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MiscTestCase, "MiscTestCase" ); namespace { -void AssertIfOdd(int n) +bool AssertIfOdd(int n) { - wxASSERT_MSG( !(n % 2), "parameter must be even" ); + wxCHECK_MSG( !(n % 2), false, "parameter must be even" ); + + return true; } } // anonymous namespace @@ -93,3 +101,31 @@ 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() +{ + wxTarEntry tarEntry; + CPPUNIT_ASSERT( wxStaticCast(&tarEntry, wxArchiveEntry) ); + + wxArchiveEntry *entry = &tarEntry; + CPPUNIT_ASSERT( wxStaticCast(entry, wxTarEntry) ); + + wxZipEntry zipEntry; + entry = &zipEntry; + CPPUNIT_ASSERT( wxStaticCast(entry, wxZipEntry) ); + + WX_ASSERT_FAILS_WITH_ASSERT( IsNull(wxStaticCast(entry, wxTarEntry)) ); + WX_ASSERT_FAILS_WITH_ASSERT( IsNull(wxStaticCast(&zipEntry, wxTarEntry)) ); +} +