1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: tests/misc/misctests.cpp
3 // Purpose: test miscellaneous stuff
4 // Author: Peter Most, Vadim Zeitlin
7 // Copyright: (c) 2008 Peter Most
8 // (c) 2009 Vadim Zeitlin
9 ///////////////////////////////////////////////////////////////////////////////
11 // ----------------------------------------------------------------------------
13 // ----------------------------------------------------------------------------
23 // just some classes using wxRTTI for wxStaticCast() test
24 #include "wx/tarstrm.h"
25 #include "wx/zipstrm.h"
27 // ----------------------------------------------------------------------------
29 // ----------------------------------------------------------------------------
31 class MiscTestCase
: public CppUnit
::TestCase
37 CPPUNIT_TEST_SUITE( MiscTestCase
);
38 CPPUNIT_TEST( Assert
);
39 CPPUNIT_TEST( Delete
);
40 CPPUNIT_TEST( StaticCast
);
41 CPPUNIT_TEST_SUITE_END();
47 DECLARE_NO_COPY_CLASS(MiscTestCase
)
50 // register in the unnamed registry so that these tests are run by default
51 CPPUNIT_TEST_SUITE_REGISTRATION( MiscTestCase
);
53 // also include in it's own registry so that these tests can be run alone
54 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( MiscTestCase
, "MiscTestCase" );
59 void AssertIfOdd(int n
)
61 wxASSERT_MSG( !(n
% 2), "parameter must be even" );
64 } // anonymous namespace
66 void MiscTestCase
::Assert()
69 WX_ASSERT_FAILS_WITH_ASSERT(AssertIfOdd(1));
71 // doesn't fail any more
72 wxAssertHandler_t oldHandler
= wxSetAssertHandler(NULL
);
74 wxSetAssertHandler(oldHandler
);
77 void MiscTestCase
::Delete()
79 // Allocate some arbitrary memory to get a valid pointer:
80 long *pointer
= new long;
81 CPPUNIT_ASSERT( pointer
!= NULL
);
83 // Check that wxDELETE sets the pointer to NULL:
85 CPPUNIT_ASSERT( pointer
== NULL
);
87 // Allocate some arbitrary array to get a valid pointer:
88 long *array
= new long[ 3 ];
89 CPPUNIT_ASSERT( array
!= NULL
);
91 // Check that wxDELETEA sets the pointer to NULL:
93 CPPUNIT_ASSERT( array
== NULL
);
95 // this results in compilation error, as it should
97 struct SomeUnknownStruct
*p
= NULL
;
102 void MiscTestCase
::StaticCast()
105 CPPUNIT_ASSERT( wxStaticCast(&tarEntry
, wxArchiveEntry
) );
107 wxArchiveEntry
*entry
= &tarEntry
;
108 CPPUNIT_ASSERT( wxStaticCast(entry
, wxTarEntry
) );
112 CPPUNIT_ASSERT( wxStaticCast(entry
, wxZipEntry
) );
114 WX_ASSERT_FAILS_WITH_ASSERT( wxStaticCast(entry
, wxTarEntry
) );
115 WX_ASSERT_FAILS_WITH_ASSERT( wxStaticCast(&zipEntry
, wxTarEntry
) );