public function testOnlyCallsTheListenerSubscribedToAGivenEvent()
 {
     $this->dispatcher->addListener(FooEvent::class, $this->listener1);
     $this->dispatcher->addListener(BarEvent::class, $this->listener2);
     $event = new FooEvent();
     $this->dispatcher->dispatch($event);
     $this->assertTrue($this->listener1->isCalled());
     $this->assertSame($event, $this->listener1->getEvent());
     $this->assertFalse($this->listener2->isCalled());
 }
 /**
  * @param ServiceLocatorInterface $serviceLocator
  *
  * @return EventDispatcher
  */
 public function __invoke(ServiceLocatorInterface $serviceLocator)
 {
     $listenersConfig = $this->getListenersConfig($serviceLocator);
     $eventDispatcher = new EventDispatcher();
     foreach ($listenersConfig as $eventName => $listenerNames) {
         $listenerNames = (array) $listenerNames;
         foreach ($listenerNames as $listenerName) {
             $listener = $serviceLocator->get($listenerName);
             $eventDispatcher->addListener($eventName, $listener);
         }
     }
     return $eventDispatcher;
 }