TEST( EventDispatcherTest, Dispatching ) { using namespace StevensDev::sgde; using namespace StevensDev::sgdt; EventDispatcher d; TestListener listener; TestEvent event; EventListener callback = std::bind( &TestListener::receive, &listener, std::placeholders::_1 ); // ensure added callbacks are called EventHandle handle = d.add( TestEvent::DEFAULT_TYPE, callback ); d.postTick(); d.dispatch( &event ); EXPECT_TRUE( listener.wasCalled() ); EXPECT_STREQ( TestEvent::DEFAULT_TYPE.c_str(), listener.receivedType().c_str() ); // ensure removed callbacks are no longer called d.remove( TestEvent::DEFAULT_TYPE, handle ); d.postTick(); listener.reset(); d.dispatch( &event ); EXPECT_FALSE( listener.wasCalled() ); }