Example #1
0
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() );
}