Rajout de doctrine/orm
[zf2.biz/application_blanche.git] / vendor / doctrine / common / tests / Doctrine / Tests / Common / EventManagerTest.php
diff --git a/vendor/doctrine/common/tests/Doctrine/Tests/Common/EventManagerTest.php b/vendor/doctrine/common/tests/Doctrine/Tests/Common/EventManagerTest.php
new file mode 100644 (file)
index 0000000..2b11b20
--- /dev/null
@@ -0,0 +1,88 @@
+<?php
+
+namespace Doctrine\Tests\Common;
+
+use Doctrine\Common\EventManager;
+use Doctrine\Common\EventArgs;
+
+class EventManagerTest extends \Doctrine\Tests\DoctrineTestCase
+{
+    /* Some pseudo events */
+    const preFoo = 'preFoo';
+    const postFoo = 'postFoo';
+    const preBar = 'preBar';
+    const postBar = 'postBar';
+
+    private $_preFooInvoked = false;
+    private $_postFooInvoked = false;
+
+    private $_eventManager;
+
+    protected function setUp()
+    {
+        $this->_eventManager = new EventManager;
+        $this->_preFooInvoked = false;
+        $this->_postFooInvoked = false;
+    }
+
+    public function testInitialState()
+    {
+        $this->assertEquals(array(), $this->_eventManager->getListeners());
+        $this->assertFalse($this->_eventManager->hasListeners(self::preFoo));
+        $this->assertFalse($this->_eventManager->hasListeners(self::postFoo));
+    }
+
+    public function testAddEventListener()
+    {
+        $this->_eventManager->addEventListener(array('preFoo', 'postFoo'), $this);
+        $this->assertTrue($this->_eventManager->hasListeners(self::preFoo));
+        $this->assertTrue($this->_eventManager->hasListeners(self::postFoo));
+        $this->assertEquals(1, count($this->_eventManager->getListeners(self::preFoo)));
+        $this->assertEquals(1, count($this->_eventManager->getListeners(self::postFoo)));
+        $this->assertEquals(2, count($this->_eventManager->getListeners()));
+    }
+
+    public function testDispatchEvent()
+    {
+        $this->_eventManager->addEventListener(array('preFoo', 'postFoo'), $this);
+        $this->_eventManager->dispatchEvent(self::preFoo);
+        $this->assertTrue($this->_preFooInvoked);
+        $this->assertFalse($this->_postFooInvoked);
+    }
+
+    public function testRemoveEventListener()
+    {
+        $this->_eventManager->addEventListener(array('preBar'), $this);
+        $this->assertTrue($this->_eventManager->hasListeners(self::preBar));
+        $this->_eventManager->removeEventListener(array('preBar'), $this);
+        $this->assertFalse($this->_eventManager->hasListeners(self::preBar));
+    }
+
+    public function testAddEventSubscriber()
+    {
+        $eventSubscriber = new TestEventSubscriber();
+        $this->_eventManager->addEventSubscriber($eventSubscriber);
+        $this->assertTrue($this->_eventManager->hasListeners(self::preFoo));
+        $this->assertTrue($this->_eventManager->hasListeners(self::postFoo));
+    }
+
+    /* Listener methods */
+
+    public function preFoo(EventArgs $e)
+    {
+        $this->_preFooInvoked = true;
+    }
+
+    public function postFoo(EventArgs $e)
+    {
+        $this->_postFooInvoked = true;
+    }
+}
+
+class TestEventSubscriber implements \Doctrine\Common\EventSubscriber
+{
+    public function getSubscribedEvents()
+    {
+        return array('preFoo', 'postFoo');
+    }
+}
\ No newline at end of file