add a unit test for new events (see #10000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58611 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
		@@ -132,6 +132,7 @@ TEST_GUI_OBJECTS =  \
 | 
			
		||||
	test_gui_textentrytest.o \
 | 
			
		||||
	test_gui_treectrltest.o \
 | 
			
		||||
	test_gui_propagation.o \
 | 
			
		||||
	test_gui_evthandler.o \
 | 
			
		||||
	test_gui_rawbmp.o \
 | 
			
		||||
	test_gui_htmlwindow.o \
 | 
			
		||||
	test_gui_guifuncs.o \
 | 
			
		||||
@@ -573,6 +574,9 @@ test_gui_treectrltest.o: $(srcdir)/controls/treectrltest.cpp $(TEST_GUI_ODEP)
 | 
			
		||||
test_gui_propagation.o: $(srcdir)/events/propagation.cpp $(TEST_GUI_ODEP)
 | 
			
		||||
	$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/events/propagation.cpp
 | 
			
		||||
 | 
			
		||||
test_gui_evthandler.o: $(srcdir)/events/evthandler.cpp $(TEST_GUI_ODEP)
 | 
			
		||||
	$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/events/evthandler.cpp
 | 
			
		||||
 | 
			
		||||
test_gui_rawbmp.o: $(srcdir)/image/rawbmp.cpp $(TEST_GUI_ODEP)
 | 
			
		||||
	$(CXXC) -c -o $@ $(TEST_GUI_CXXFLAGS) $(srcdir)/image/rawbmp.cpp
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										188
									
								
								tests/events/evthandler.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										188
									
								
								tests/events/evthandler.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,188 @@
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
// Name:        tests/events/evthandler.cpp
 | 
			
		||||
// Purpose:     Test the new event types and wxEvtHandler-methods
 | 
			
		||||
// Author:      Peter Most
 | 
			
		||||
// Created:     2009-01-24
 | 
			
		||||
// RCS-ID:      $Id$
 | 
			
		||||
// Copyright:   (c) 2009 Peter Most
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
// headers
 | 
			
		||||
// ----------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
#include "testprec.h"
 | 
			
		||||
 | 
			
		||||
#ifdef __BORLANDC__
 | 
			
		||||
    #pragma hdrstop
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef WX_PRECOMP
 | 
			
		||||
#endif // WX_PRECOMP
 | 
			
		||||
 | 
			
		||||
#include "wx/event.h"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// --------------------------------------------------------------------------
 | 
			
		||||
// test class
 | 
			
		||||
// --------------------------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class EvtHandlerTestCase : public CppUnit::TestCase
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
    EvtHandlerTestCase() {}
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    CPPUNIT_TEST_SUITE( EvtHandlerTestCase );
 | 
			
		||||
        CPPUNIT_TEST( TestConnectCompilation );
 | 
			
		||||
        CPPUNIT_TEST( TestEventFunctorCompare );
 | 
			
		||||
    CPPUNIT_TEST_SUITE_END();
 | 
			
		||||
 | 
			
		||||
    void TestConnectCompilation();
 | 
			
		||||
    void TestEventFunctorCompare();
 | 
			
		||||
 | 
			
		||||
    DECLARE_NO_COPY_CLASS(EvtHandlerTestCase)
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// register in the unnamed registry so that these tests are run by default
 | 
			
		||||
CPPUNIT_TEST_SUITE_REGISTRATION( EvtHandlerTestCase );
 | 
			
		||||
 | 
			
		||||
// also include in it's own registry so that these tests can be run alone
 | 
			
		||||
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( EvtHandlerTestCase, "EvtHandlerTestCase" );
 | 
			
		||||
 | 
			
		||||
const wxEventType EVT_LEGACY = wxNewEventType();
 | 
			
		||||
 | 
			
		||||
class MyEvent : public wxEvent
 | 
			
		||||
{
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
wxDEFINE_EVENT( EVT_EVENT, MyEvent )
 | 
			
		||||
 | 
			
		||||
// An arbitrary functor:
 | 
			
		||||
 | 
			
		||||
class MyFunctor
 | 
			
		||||
{
 | 
			
		||||
    public:
 | 
			
		||||
        void operator () ( MyEvent & )
 | 
			
		||||
        { }
 | 
			
		||||
 | 
			
		||||
        bool operator == ( const MyFunctor & ) const
 | 
			
		||||
        { return ( true ); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MyHandler : public wxEvtHandler
 | 
			
		||||
{
 | 
			
		||||
    public:
 | 
			
		||||
        void handleMethod( MyEvent & )
 | 
			
		||||
        { }
 | 
			
		||||
 | 
			
		||||
        static void handleFunction( MyEvent & )
 | 
			
		||||
        { }
 | 
			
		||||
 | 
			
		||||
        void handleEvent( wxEvent & )
 | 
			
		||||
        { }
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void EvtHandlerTestCase::TestConnectCompilation()
 | 
			
		||||
{
 | 
			
		||||
    // Test that connecting the 'legacy' events still compiles:
 | 
			
		||||
 | 
			
		||||
    MyHandler handler;
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
    handler.Connect( 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
    handler.Disconnect( 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
    handler.Connect( 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
    handler.Disconnect( 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_LEGACY, (wxObjectEventFunction)&MyHandler::handleEvent );
 | 
			
		||||
 | 
			
		||||
    // Call (and therefore instantiate) all Connect() variants to detect template
 | 
			
		||||
    // errors:
 | 
			
		||||
 | 
			
		||||
#if !wxEVENTS_COMPATIBILITY_2_8
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
    handler.Connect( 0, EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
    handler.Disconnect( 0, EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_EVENT, &MyHandler::handleFunction );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
    handler.Connect( 0, EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
    handler.Disconnect( 0, EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    handler.Connect( 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    handler.Disconnect( 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    wxEvtHandler::Connect( &handler, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    wxEvtHandler::Connect( &handler, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    wxEvtHandler::Connect( &handler, 0, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
    wxEvtHandler::Disconnect( &handler, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    wxEvtHandler::Disconnect( &handler, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
    wxEvtHandler::Disconnect( &handler, 0, 0, EVT_EVENT, &MyHandler::handleMethod, NULL, &handler );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    MyFunctor functor;
 | 
			
		||||
 | 
			
		||||
    handler.Connect( EVT_EVENT, functor );
 | 
			
		||||
    handler.Connect( 0, EVT_EVENT, functor );
 | 
			
		||||
    handler.Connect( 0, 0, EVT_EVENT, functor );
 | 
			
		||||
 | 
			
		||||
    handler.Disconnect( EVT_EVENT, functor );
 | 
			
		||||
    handler.Disconnect( 0, EVT_EVENT, functor );
 | 
			
		||||
    handler.Disconnect( 0, 0, EVT_EVENT, functor );
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EvtHandlerTestCase::TestEventFunctorCompare()
 | 
			
		||||
{
 | 
			
		||||
//#if !wxEVENTS_COMPATIBILITY_2_8
 | 
			
		||||
//    MyHandler handler1;
 | 
			
		||||
//    wxEventFunctor *connectFunctor = wxNewEventFunctor( EVT_EVENT, &MyHandler::handleMethod, &handler1 );
 | 
			
		||||
//    wxEventFunctor *disconnectFunctor = wxNewEventFunctor( EVT_EVENT, &MyHandler::handleMethod, &handler1 );
 | 
			
		||||
//    wxEventFunctor *nullFunctor = wxNewEventFunctor( EVT_EVENT, &MyHandler::handleMethod );
 | 
			
		||||
//   
 | 
			
		||||
//    CPPUNIT_ASSERT( connectFunctor->Matches( *disconnectFunctor ));
 | 
			
		||||
//    CPPUNIT_ASSERT( disconnectFunctor->Matches( *connectFunctor ));
 | 
			
		||||
//
 | 
			
		||||
//    CPPUNIT_ASSERT( connectFunctor->Matches( *nullFunctor ));
 | 
			
		||||
//    CPPUNIT_ASSERT( nullFunctor->Matches( *connectFunctor ));
 | 
			
		||||
//
 | 
			
		||||
//    CPPUNIT_ASSERT( disconnectFunctor->Matches( *nullFunctor ));
 | 
			
		||||
//    CPPUNIT_ASSERT( nullFunctor->Matches( *disconnectFunctor ));
 | 
			
		||||
//#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -117,6 +117,7 @@ TEST_GUI_OBJECTS =  \
 | 
			
		||||
	$(OBJS)\test_gui_textentrytest.obj \
 | 
			
		||||
	$(OBJS)\test_gui_treectrltest.obj \
 | 
			
		||||
	$(OBJS)\test_gui_propagation.obj \
 | 
			
		||||
	$(OBJS)\test_gui_evthandler.obj \
 | 
			
		||||
	$(OBJS)\test_gui_rawbmp.obj \
 | 
			
		||||
	$(OBJS)\test_gui_htmlwindow.obj \
 | 
			
		||||
	$(OBJS)\test_gui_guifuncs.obj \
 | 
			
		||||
@@ -613,6 +614,9 @@ $(OBJS)\test_gui_treectrltest.obj: .\controls\treectrltest.cpp
 | 
			
		||||
$(OBJS)\test_gui_propagation.obj: .\events\propagation.cpp
 | 
			
		||||
	$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\events\propagation.cpp
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_evthandler.obj: .\events\evthandler.cpp
 | 
			
		||||
	$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\events\evthandler.cpp
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_rawbmp.obj: .\image\rawbmp.cpp
 | 
			
		||||
	$(CXX) -q -c -P -o$@ $(TEST_GUI_CXXFLAGS) .\image\rawbmp.cpp
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -110,6 +110,7 @@ TEST_GUI_OBJECTS =  \
 | 
			
		||||
	$(OBJS)\test_gui_textentrytest.o \
 | 
			
		||||
	$(OBJS)\test_gui_treectrltest.o \
 | 
			
		||||
	$(OBJS)\test_gui_propagation.o \
 | 
			
		||||
	$(OBJS)\test_gui_evthandler.o \
 | 
			
		||||
	$(OBJS)\test_gui_rawbmp.o \
 | 
			
		||||
	$(OBJS)\test_gui_htmlwindow.o \
 | 
			
		||||
	$(OBJS)\test_gui_guifuncs.o \
 | 
			
		||||
@@ -593,6 +594,9 @@ $(OBJS)\test_gui_treectrltest.o: ./controls/treectrltest.cpp
 | 
			
		||||
$(OBJS)\test_gui_propagation.o: ./events/propagation.cpp
 | 
			
		||||
	$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_evthandler.o: ./events/evthandler.cpp
 | 
			
		||||
	$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_rawbmp.o: ./image/rawbmp.cpp
 | 
			
		||||
	$(CXX) -c -o $@ $(TEST_GUI_CXXFLAGS) $(CPPDEPS) $<
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -113,6 +113,7 @@ TEST_GUI_OBJECTS =  \
 | 
			
		||||
	$(OBJS)\test_gui_textentrytest.obj \
 | 
			
		||||
	$(OBJS)\test_gui_treectrltest.obj \
 | 
			
		||||
	$(OBJS)\test_gui_propagation.obj \
 | 
			
		||||
	$(OBJS)\test_gui_evthandler.obj \
 | 
			
		||||
	$(OBJS)\test_gui_rawbmp.obj \
 | 
			
		||||
	$(OBJS)\test_gui_htmlwindow.obj \
 | 
			
		||||
	$(OBJS)\test_gui_guifuncs.obj \
 | 
			
		||||
@@ -698,6 +699,9 @@ $(OBJS)\test_gui_treectrltest.obj: .\controls\treectrltest.cpp
 | 
			
		||||
$(OBJS)\test_gui_propagation.obj: .\events\propagation.cpp
 | 
			
		||||
	$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\events\propagation.cpp
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_evthandler.obj: .\events\evthandler.cpp
 | 
			
		||||
	$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\events\evthandler.cpp
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_rawbmp.obj: .\image\rawbmp.cpp
 | 
			
		||||
	$(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) .\image\rawbmp.cpp
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -344,6 +344,7 @@ TEST_GUI_OBJECTS =  &
 | 
			
		||||
	$(OBJS)\test_gui_textentrytest.obj &
 | 
			
		||||
	$(OBJS)\test_gui_treectrltest.obj &
 | 
			
		||||
	$(OBJS)\test_gui_propagation.obj &
 | 
			
		||||
	$(OBJS)\test_gui_evthandler.obj &
 | 
			
		||||
	$(OBJS)\test_gui_rawbmp.obj &
 | 
			
		||||
	$(OBJS)\test_gui_htmlwindow.obj &
 | 
			
		||||
	$(OBJS)\test_gui_guifuncs.obj &
 | 
			
		||||
@@ -650,6 +651,9 @@ $(OBJS)\test_gui_treectrltest.obj :  .AUTODEPEND .\controls\treectrltest.cpp
 | 
			
		||||
$(OBJS)\test_gui_propagation.obj :  .AUTODEPEND .\events\propagation.cpp
 | 
			
		||||
	$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_evthandler.obj :  .AUTODEPEND .\events\evthandler.cpp
 | 
			
		||||
	$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
 | 
			
		||||
 | 
			
		||||
$(OBJS)\test_gui_rawbmp.obj :  .AUTODEPEND .\image\rawbmp.cpp
 | 
			
		||||
	$(CXX) -bt=nt -zq -fo=$^@ $(TEST_GUI_CXXFLAGS) $<
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -114,6 +114,7 @@
 | 
			
		||||
            controls/textentrytest.cpp
 | 
			
		||||
            controls/treectrltest.cpp
 | 
			
		||||
            events/propagation.cpp
 | 
			
		||||
            events/evthandler.cpp
 | 
			
		||||
            image/rawbmp.cpp
 | 
			
		||||
            html/htmlwindow.cpp
 | 
			
		||||
            misc/guifuncs.cpp
 | 
			
		||||
 
 | 
			
		||||
@@ -253,6 +253,10 @@ SOURCE=.\dummy.cpp
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\events\evthandler.cpp
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 | 
			
		||||
SOURCE=.\misc\garbage.cpp
 | 
			
		||||
# End Source File
 | 
			
		||||
# Begin Source File
 | 
			
		||||
 
 | 
			
		||||
@@ -609,6 +609,9 @@
 | 
			
		||||
						UsePrecompiledHeader="1"/>
 | 
			
		||||
				</FileConfiguration>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\events\evthandler.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\misc\garbage.cpp">
 | 
			
		||||
			</File>
 | 
			
		||||
 
 | 
			
		||||
@@ -891,6 +891,10 @@
 | 
			
		||||
					/>
 | 
			
		||||
				</FileConfiguration>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\events\evthandler.cpp"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\misc\garbage.cpp"
 | 
			
		||||
				>
 | 
			
		||||
 
 | 
			
		||||
@@ -863,6 +863,10 @@
 | 
			
		||||
					/>
 | 
			
		||||
				</FileConfiguration>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\events\evthandler.cpp"
 | 
			
		||||
				>
 | 
			
		||||
			</File>
 | 
			
		||||
			<File
 | 
			
		||||
				RelativePath=".\misc\garbage.cpp"
 | 
			
		||||
				>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user