public function testAnnotatedHandlersRecognized()
 {
     //        $delegate = new SimpleEventBus(new InMemoryEventListenerRegistry());
     $listener = new MyReplayAwareListener();
     $adapter = new AnnotatedEventListenerAdapter($listener, $this->delegate, new SimpleAnnotationReaderFactory());
     $this->delegate->getEventListenerRegistry()->subscribe($adapter);
     $this->testSubject->startReplay();
     $this->assertEquals(0, $listener->counter);
     $this->assertEquals(1, $listener->before);
     $this->assertEquals(1, $listener->after);
 }
 public function testEventIsDispatchedToSubscribedListeners()
 {
     $this->assertNotSame($this->listener1, $this->listener2);
     $this->assertNotSame($this->listener1, $this->listener3);
     $this->listener1->expects($this->exactly(2))->method('handle');
     $this->listener2->expects($this->exactly(2))->method('handle');
     $this->listener3->expects($this->exactly(2))->method('handle');
     $this->testSubject->publish($this->newEvent());
     $this->testSubject->getEventListenerRegistry()->subscribe($this->listener1);
     // subscribing twice should not make a difference
     $this->testSubject->getEventListenerRegistry()->subscribe($this->listener1);
     $this->testSubject->publish($this->newEvent());
     $this->testSubject->getEventListenerRegistry()->subscribe($this->listener2);
     $this->testSubject->getEventListenerRegistry()->subscribe($this->listener3);
     $this->testSubject->publish($this->newEvent());
     $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener1);
     $this->testSubject->publish($this->newEvent());
     $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener2);
     $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener3);
     // unsubscribe a non-subscribed listener should not fail
     $this->testSubject->getEventListenerRegistry()->unsubscribe($this->listener3);
     $this->testSubject->publish($this->newEvent());
 }