$t = new lime_test(19); $dispatcher = new sfEventDispatcher(); // ->connect() ->disconnect() $t->diag('->connect() ->disconnect()'); $dispatcher->connect('bar', 'listenToBar'); $t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->connect() connects a listener to an event name'); $dispatcher->connect('bar', 'listenToBarBar'); $t->is($dispatcher->getListeners('bar'), array('listenToBar', 'listenToBarBar'), '->connect() can connect several listeners for the same event name'); $dispatcher->connect('barbar', 'listenToBarBar'); $dispatcher->disconnect('bar', 'listenToBarBar'); $t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->disconnect() disconnects a listener for an event name'); $t->is($dispatcher->getListeners('barbar'), array('listenToBarBar'), '->disconnect() disconnects a listener for an event name'); $t->ok($dispatcher->disconnect('foobar', 'listen') === false, '->disconnect() returns false if the listener does not exist'); // ->getListeners() ->hasListeners() $t->diag('->getListeners() ->hasListeners()'); $t->is($dispatcher->hasListeners('foo'), false, '->hasListeners() returns false if the event has no listener'); $dispatcher->connect('foo', 'listenToFoo'); $t->is($dispatcher->hasListeners('foo'), true, '->hasListeners() returns true if the event has some listeners'); $dispatcher->disconnect('foo', 'listenToFoo'); $t->is($dispatcher->hasListeners('foo'), false, '->hasListeners() returns false if the event has no listener'); $t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->getListeners() returns an array of listeners connected to the given event name'); $t->is($dispatcher->getListeners('foobar'), array(), '->getListeners() returns an empty array if no listener are connected to the given event name'); $listener = new Listener(); // ->notify() $t->diag('->notify()'); $listener->reset(); $dispatcher = new sfEventDispatcher(); $dispatcher->connect('foo', array($listener, 'listenToFoo')); $dispatcher->connect('foo', array($listener, 'listenToFooBis')); $e = $dispatcher->notify($event = new sfEvent(new stdClass(), 'foo')); $t->is($listener->getValue(), 'listenToFoolistenToFooBis', '->notify() notifies all registered listeners in order');
/** * @package sfLucenePlugin * @subpackage Test * @author Carl Vondrick * @version SVN: $Id: sfLuceneEventConnectorTest.php 7108 2008-01-20 07:44:42Z Carl.Vondrick $ */ require dirname(__FILE__) . '/../../bootstrap/unit.php'; $t = new limeade_test(5, limeade_output::get()); $limeade = new limeade_sf($t); $app = $limeade->bootstrap(); class FooListener { public $event; public function listen($event) { $this->event = $event; } } $source = new sfEventDispatcher(); $target = new sfEventDispatcher(); $connector = new sfLuceneEventConnector($source, 'foo', $target, 'bar'); $t->ok($source->hasListeners('foo'), '__construct() connects a listener to the source'); $subject = 'Fabien'; $params = array('a', 'b', 'c'); $listener = new FooListener(); $target->connect('bar', array($listener, 'listen')); $source->notify(new sfEvent($subject, 'foo', $params)); $t->isa_ok($listener->event, 'sfEvent', 'calling a linked event calls target'); $t->is($listener->event->getSubject(), $subject, 'calling a linked event sends correct subject'); $t->is($listener->event->getName(), 'bar', 'calling a linked event sends correct name'); $t->is($listener->event->getParameters(), $params, 'calling a linked event sends correct parameters');