| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: tests/events/clone.cpp
- // Purpose: Test wxEvent::Clone() implementation by all event classes
- // Author: Vadim Zeitlin, based on the code by Francesco Montorsi
- // Created: 2009-03-22
- // Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
- ///////////////////////////////////////////////////////////////////////////////
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #include "testprec.h"
- #ifdef __BORLANDC__
- #pragma hdrstop
- #endif
- #ifndef WX_PRECOMP
- #include "wx/event.h"
- #endif // WX_PRECOMP
- // --------------------------------------------------------------------------
- // test class
- // --------------------------------------------------------------------------
- class EventCloneTestCase : public CppUnit::TestCase
- {
- public:
- EventCloneTestCase() {}
- private:
- CPPUNIT_TEST_SUITE( EventCloneTestCase );
- CPPUNIT_TEST( CheckAll );
- CPPUNIT_TEST_SUITE_END();
- void CheckAll();
- DECLARE_NO_COPY_CLASS(EventCloneTestCase)
- };
- // register in the unnamed registry so that these tests are run by default
- CPPUNIT_TEST_SUITE_REGISTRATION( EventCloneTestCase );
- // also include in its own registry so that these tests can be run alone
- CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( EventCloneTestCase, "EventCloneTestCase" );
- void EventCloneTestCase::CheckAll()
- {
- // check if event classes implement Clone() correctly
- // NOTE: the check is done against _all_ event classes which are linked to
- // the executable currently running, which are not necessarily all
- // wxWidgets event classes.
- const wxClassInfo *ci = wxClassInfo::GetFirst();
- for (; ci; ci = ci->GetNext())
- {
- wxString cn = wxString(ci->GetClassName());
-
- // is this class derived from wxEvent?
- if ( !ci->IsKindOf(CLASSINFO(wxEvent)) ||
- cn == "wxEvent" )
- continue;
- const std::string
- msg = std::string("Event class \"") +
- std::string(cn.c_str()) + "\"";
- CPPUNIT_ASSERT_MESSAGE( msg, ci->IsDynamic() );
- wxEvent * const test = wxDynamicCast(ci->CreateObject(),wxEvent);
- CPPUNIT_ASSERT_MESSAGE( msg, test );
- wxEvent * const cloned = test->Clone();
- delete test;
- CPPUNIT_ASSERT_MESSAGE( msg, cloned );
- CPPUNIT_ASSERT_MESSAGE( msg, cloned->GetClassInfo() == ci );
- delete cloned;
- }
- }
|