Development

Changeset 6503

You must first sign up to be able to contribute.

Changeset 6503

Show
Ignore:
Timestamp:
12/14/07 11:24:02 (7 months ago)
Author:
fabien
Message:

added unit tests to sfEvent and sfEventDispatcher

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/test/unit/event/sfEventDispatcherTest.php

    r4951 r6503  
    1111require_once(dirname(__FILE__).'/../../bootstrap/unit.php'); 
    1212 
    13 $t = new lime_test(3, new lime_output_color()); 
     13$t = new lime_test(18, new lime_output_color()); 
    1414 
    1515$dispatcher = new sfEventDispatcher(); 
    1616 
    17 // ->connect() 
     17// ->connect() ->disconnect() 
     18$t->diag('->connect() ->disconnect()'); 
     19$dispatcher->connect('bar', 'listenToBar'); 
     20$t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->connect() connects a listener to an event name'); 
     21$dispatcher->connect('bar', 'listenToBarBar'); 
     22$t->is($dispatcher->getListeners('bar'), array('listenToBar', 'listenToBarBar'), '->connect() can connect several listeners for the same event name'); 
    1823 
    19 // ->hasListeners() 
    20 $t->is($dispatcher->hasListeners('foo'), false, '->hasListeners() returns true if the event name has some listeners'); 
     24$dispatcher->connect('barbar', 'listenToBarBar'); 
     25$dispatcher->disconnect('bar', 'listenToBarBar'); 
     26$t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->disconnect() disconnects a listener for an event name'); 
     27$t->is($dispatcher->getListeners('barbar'), array('listenToBarBar'), '->disconnect() disconnects a listener for an event name'); 
     28 
     29 
     30// ->getListeners() ->hasListeners() 
     31$t->diag('->getListeners() ->hasListeners()'); 
     32$t->is($dispatcher->hasListeners('foo'), false, '->hasListeners() returns false if the event has no listener'); 
    2133$dispatcher->connect('foo', 'listenToFoo'); 
    22 $t->is($dispatcher->hasListeners('foo'), true, '->hasListeners() returns true if the event name has some listeners'); 
     34$t->is($dispatcher->hasListeners('foo'), true, '->hasListeners() returns true if the event has some listeners'); 
    2335$dispatcher->disconnect('foo', 'listenToFoo'); 
    24 $t->is($dispatcher->hasListeners('foo'), false, '->disconnect() removes a listener'); 
     36$t->is($dispatcher->hasListeners('foo'), false, '->hasListeners() returns false if the event has no listener'); 
    2537 
    26 function listenToFoo(sfEvent $event) 
     38$t->is($dispatcher->getListeners('bar'), array('listenToBar'), '->getListeners() returns an array of listeners connected to the given event name'); 
     39$t->is($dispatcher->getListeners('foobar'), array(), '->getListeners() returns an empty array if no listener are connected to the given event name'); 
     40 
     41$listener = new Listener(); 
     42 
     43// ->notify() 
     44$t->diag('->notify()'); 
     45$listener->reset(); 
     46$dispatcher = new sfEventDispatcher(); 
     47$dispatcher->connect('foo', array($listener, 'listenToFoo')); 
     48$dispatcher->connect('foo', array($listener, 'listenToFooBis')); 
     49$e = $dispatcher->notify($event = new sfEvent(new stdClass(), 'foo')); 
     50$t->is($listener->getValue(), 'listenToFoolistenToFooBis', '->notify() notifies all registered listeners in order'); 
     51$t->is($e, $event, '->notify() returns the event object'); 
     52 
     53$listener->reset(); 
     54$dispatcher = new sfEventDispatcher(); 
     55$dispatcher->connect('foo', array($listener, 'listenToFooBis')); 
     56$dispatcher->connect('foo', array($listener, 'listenToFoo')); 
     57$dispatcher->notify(new sfEvent(new stdClass(), 'foo')); 
     58$t->is($listener->getValue(), 'listenToFooBislistenToFoo', '->notify() notifies all registered listeners in order'); 
     59 
     60// ->notifyUntil() 
     61$t->diag('->notifyUntil()'); 
     62$listener->reset(); 
     63$dispatcher = new sfEventDispatcher(); 
     64$dispatcher->connect('foo', array($listener, 'listenToFoo')); 
     65$dispatcher->connect('foo', array($listener, 'listenToFooBis')); 
     66$e = $dispatcher->notifyUntil($event = new sfEvent(new stdClass(), 'foo')); 
     67$t->is($listener->getValue(), 'listenToFoolistenToFooBis', '->notifyUntil() notifies all registered listeners in order and stops if it returns true'); 
     68$t->is($e, $event, '->notifyUntil() returns the event object'); 
     69 
     70$listener->reset(); 
     71$dispatcher = new sfEventDispatcher(); 
     72$dispatcher->connect('foo', array($listener, 'listenToFooBis')); 
     73$dispatcher->connect('foo', array($listener, 'listenToFoo')); 
     74$e = $dispatcher->notifyUntil($event = new sfEvent(new stdClass(), 'foo')); 
     75$t->is($listener->getValue(), 'listenToFooBis', '->notifyUntil() notifies all registered listeners in order and stops if it returns true'); 
     76 
     77// ->filter() 
     78$t->diag('->filter()'); 
     79$listener->reset(); 
     80$dispatcher = new sfEventDispatcher(); 
     81$dispatcher->connect('foo', array($listener, 'filterFoo')); 
     82$dispatcher->connect('foo', array($listener, 'filterFooBis')); 
     83$e = $dispatcher->filter($event = new sfEvent(new stdClass(), 'foo'), 'foo'); 
     84$t->is($e->getReturnValue(), '-*foo*-', '->filter() filters a value'); 
     85$t->is($e, $event, '->filter() returns the event object'); 
     86 
     87$listener->reset(); 
     88$dispatcher = new sfEventDispatcher(); 
     89$dispatcher->connect('foo', array($listener, 'filterFooBis')); 
     90$dispatcher->connect('foo', array($listener, 'filterFoo')); 
     91$e = $dispatcher->filter($event = new sfEvent(new stdClass(), 'foo'), 'foo'); 
     92$t->is($e->getReturnValue(), '*-foo-*', '->filter() filters a value'); 
     93 
     94class Listener 
    2795{ 
    28   return $event; 
     96  protected 
     97    $value = ''; 
     98 
     99  function filterFoo(sfEvent $event, $foo) 
     100  { 
     101    return "*$foo*"; 
     102  } 
     103 
     104  function filterFooBis(sfEvent $event, $foo) 
     105  { 
     106    return "-$foo-"; 
     107  } 
     108 
     109  function listenToFoo(sfEvent $event) 
     110  { 
     111    $this->value .= 'listenToFoo'; 
     112  } 
     113 
     114  function listenToFooBis(sfEvent $event) 
     115  { 
     116    $this->value .= 'listenToFooBis'; 
     117 
     118    return true; 
     119  } 
     120 
     121  function getValue() 
     122  { 
     123    return $this->value; 
     124  } 
     125 
     126  function reset() 
     127  { 
     128    $this->value = ''; 
     129  } 
    29130}