public function testGetListeners()
 {
     $dispatcher = new EventDispatcher();
     $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
     $tdispatcher->addListener('foo', $listener = function () {
     });
     $this->assertSame($dispatcher->getListeners('foo'), $tdispatcher->getListeners('foo'));
 }
 public function testListenerCanRemoveItselfWhenExecuted()
 {
     $eventDispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
     $listener1 = function ($event, $eventName, EventDispatcherInterface $dispatcher) use(&$listener1) {
         $dispatcher->removeListener('foo', $listener1);
     };
     $eventDispatcher->addListener('foo', $listener1);
     $eventDispatcher->addListener('foo', function () {
     });
     $eventDispatcher->dispatch('foo');
     $this->assertCount(1, $eventDispatcher->getListeners('foo'), 'expected listener1 to be removed');
 }