diff options
author | Yuri Chebotarev <ychebotarev@productengine.com> | 2009-12-04 20:47:17 +0200 |
---|---|---|
committer | Yuri Chebotarev <ychebotarev@productengine.com> | 2009-12-04 20:47:17 +0200 |
commit | 67ff38b51b59766ff7bc0af1e541b54ac067ea70 (patch) | |
tree | d204b5b656911187d12b08b8ed77a873f9758b4d /indra/test/llevents_tut.cpp | |
parent | c28fd45839b0a1924c80bc289a90e4756e677472 (diff) | |
parent | ae6911d094bcfaa730fd77f3c55c9ea5fa02b229 (diff) |
merge
--HG--
branch : product-engine
Diffstat (limited to 'indra/test/llevents_tut.cpp')
-rw-r--r-- | indra/test/llevents_tut.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/indra/test/llevents_tut.cpp b/indra/test/llevents_tut.cpp index 31130c3c79..e58b10ce07 100644 --- a/indra/test/llevents_tut.cpp +++ b/indra/test/llevents_tut.cpp @@ -21,6 +21,7 @@ #define testable public #include "llevents.h" #undef testable +#include "lllistenerwrapper.h" // STL headers // std headers #include <iostream> @@ -639,6 +640,33 @@ namespace tut heaptest.post(2); } + template<> template<> + void events_object::test<15>() + { + // This test ensures that using an LLListenerWrapper subclass doesn't + // block Boost.Signals2 from recognizing a bound LLEventTrackable + // subclass. + set_test_name("listen(llwrap<LLLogListener>(boost::bind(...TempTrackableListener ref...)))"); + bool live = false; + LLEventPump& heaptest(pumps.obtain("heaptest")); + LLBoundListener connection; + { + TempTrackableListener tempListener("temp", live); + ensure("TempTrackableListener constructed", live); + connection = heaptest.listen(tempListener.getName(), + llwrap<LLLogListener>( + boost::bind(&TempTrackableListener::call, + boost::ref(tempListener), _1))); + heaptest.post(1); + check_listener("received", tempListener, 1); + } // presumably this will make tempListener go away? + // verify that + ensure("TempTrackableListener destroyed", ! live); + ensure("implicit disconnect", ! connection.connected()); + // now just make sure we don't blow up trying to access a freed object! + heaptest.post(2); + } + class TempSharedListener: public TempListener, public boost::enable_shared_from_this<TempSharedListener> { @@ -649,7 +677,7 @@ namespace tut }; template<> template<> - void events_object::test<15>() + void events_object::test<16>() { set_test_name("listen(boost::bind(...TempSharedListener ref...))"); #if 0 |