Ejemplo n.º 1
0
 public function testRemoveListener()
 {
     $event1 = new TEST_DummyEvent();
     $event2 = new TEST_DummyEvent();
     $event1->id = 1;
     $event2->id = 2;
     $dispatcher = M3_Event_DispatcherFactory::getSimpleDispatcher();
     $listener1 = new SimpleEventListener();
     $listener2 = new SimpleEventListener();
     $dispatcher->addListener($listener1);
     $dispatcher->addListener($listener2);
     $dispatcher->addListener($listener2);
     // just making sure this doesn't break things - should be a no-op
     $dispatcher->dispatchEvent($event1);
     $dispatcher->removeListener($listener2);
     $dispatcher->removeListener($listener2);
     // just making sure this doesn't break things - should be a no-op
     $dispatcher->dispatchEvent($event2);
     $this->assertEquals(2, $listener1->getNumEvents());
     $this->assertEquals(1, $listener2->getNumEvents());
     $this->assertEquals(TEST_DummyEvent::KIND, $listener1->getLastEvent()->getKind());
     $this->assertEquals(TEST_DummyEvent::KIND, $listener2->getLastEvent()->getKind());
     $this->assertEquals(2, $listener1->getLastEvent()->id);
     $this->assertEquals(1, $listener2->getLastEvent()->id);
     // just some sanity checking
     $this->assertType("M3_Event_IEvent", $listener1->getLastEvent());
     $this->assertType("M3_Event_IEvent", $listener2->getLastEvent());
     $this->assertType("TEST_DummyEvent", $listener1->getLastEvent());
     $this->assertType("TEST_DummyEvent", $listener2->getLastEvent());
 }