88 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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');
 | 
						|
    }
 | 
						|
} |