3 namespace Doctrine\Tests\Common;
5 use Doctrine\Common\EventManager;
6 use Doctrine\Common\EventArgs;
8 class EventManagerTest extends \Doctrine\Tests\DoctrineTestCase
10 /* Some pseudo events */
11 const preFoo = 'preFoo';
12 const postFoo = 'postFoo';
13 const preBar = 'preBar';
14 const postBar = 'postBar';
16 private $_preFooInvoked = false;
17 private $_postFooInvoked = false;
19 private $_eventManager;
21 protected function setUp()
23 $this->_eventManager = new EventManager;
24 $this->_preFooInvoked = false;
25 $this->_postFooInvoked = false;
28 public function testInitialState()
30 $this->assertEquals(array(), $this->_eventManager->getListeners());
31 $this->assertFalse($this->_eventManager->hasListeners(self::preFoo));
32 $this->assertFalse($this->_eventManager->hasListeners(self::postFoo));
35 public function testAddEventListener()
37 $this->_eventManager->addEventListener(array('preFoo', 'postFoo'), $this);
38 $this->assertTrue($this->_eventManager->hasListeners(self::preFoo));
39 $this->assertTrue($this->_eventManager->hasListeners(self::postFoo));
40 $this->assertEquals(1, count($this->_eventManager->getListeners(self::preFoo)));
41 $this->assertEquals(1, count($this->_eventManager->getListeners(self::postFoo)));
42 $this->assertEquals(2, count($this->_eventManager->getListeners()));
45 public function testDispatchEvent()
47 $this->_eventManager->addEventListener(array('preFoo', 'postFoo'), $this);
48 $this->_eventManager->dispatchEvent(self::preFoo);
49 $this->assertTrue($this->_preFooInvoked);
50 $this->assertFalse($this->_postFooInvoked);
53 public function testRemoveEventListener()
55 $this->_eventManager->addEventListener(array('preBar'), $this);
56 $this->assertTrue($this->_eventManager->hasListeners(self::preBar));
57 $this->_eventManager->removeEventListener(array('preBar'), $this);
58 $this->assertFalse($this->_eventManager->hasListeners(self::preBar));
61 public function testAddEventSubscriber()
63 $eventSubscriber = new TestEventSubscriber();
64 $this->_eventManager->addEventSubscriber($eventSubscriber);
65 $this->assertTrue($this->_eventManager->hasListeners(self::preFoo));
66 $this->assertTrue($this->_eventManager->hasListeners(self::postFoo));
69 /* Listener methods */
71 public function preFoo(EventArgs $e)
73 $this->_preFooInvoked = true;
76 public function postFoo(EventArgs $e)
78 $this->_postFooInvoked = true;
82 class TestEventSubscriber implements \Doctrine\Common\EventSubscriber
84 public function getSubscribedEvents()
86 return array('preFoo', 'postFoo');