public function testEventPriority() { $result = null; $this->emitter->on('init', function () use(&$result) { $result = 'early'; }); $this->emitter->on('init', function () use(&$result) { $result = 'late'; }, 11); $this->emitter->emit('init'); $this->assertEquals('early', $result); }
public function testOffRemovesAllListeners() { $function = function () { }; $this->emitter->on('foo', $function); $this->emitter->off('foo', $function); $this->assertFalse($this->emitter->hasEventListener('foo', $function)); }
function testRemoveAllListeners() { $self = $this; $ok = false; $bad = false; $eventEmitter = new EventEmitter(); $listener1 = function () use(&$bad) { $bad = true; }; $listener2 = function () use(&$bad) { $bad = true; }; $eventEmitter->on('test', $listener1); $eventEmitter->on('test', $listener2); $eventEmitter->removeAllListeners('test'); $eventEmitter->emit('test'); $this->assertFalse($bad); }
/** * {@inheritdoc} */ public function on($event, callable $listener) { if (is_array($event)) { foreach ($event as $ev) { parent::on($ev, $listener); } } else { parent::on($event, $listener); } }
function testContinueCallBackBreakByHandler() { $ee = new EventEmitter(); $handlerCounter = 0; $bla = function () use(&$handlerCounter) { $handlerCounter++; return false; }; $ee->on('foo', $bla); $ee->on('foo', $bla); $ee->on('foo', $bla); $continueCounter = 0; $r = $ee->emit('foo', [], function () use(&$continueCounter) { $continueCounter++; return false; }); $this->assertFalse($r); $this->assertEquals(1, $handlerCounter); $this->assertEquals(0, $continueCounter); }
public function testOffMulti() { $closure = function () { }; $closure1 = function () { }; $this->event->on(array('a', 'b'), $closure); $this->event->addListener(array('a', 'b'), $closure1); $this->assertEquals(array($closure, $closure1), $this->event->listeners('a')); $this->assertEquals(array($closure, $closure1), $this->event->listeners('b')); $this->event->off(array('a', 'b'), $closure); $this->assertEquals(array(1 => $closure1), $this->event->listeners('a')); $this->assertEquals(array(1 => $closure1), $this->event->listeners('b')); }
function testUnregisterAllListenersForMultipleEvents() { $a = 0; $b = 0; $ee = new EventEmitter(); $ee->on(['foo', 'bar', 'qux'], function () use(&$a) { $a++; }); $ee->on(['bar', 'qux'], function () use(&$b) { $b++; }); $ee->removeAllListeners(['foo', 'bar']); $ee->emit('foo'); $ee->emit('bar'); $ee->emit('qux'); $this->assertEquals(1, $a); $this->assertEquals(1, $b); }
<?php require '../vendor/autoload.php'; $listener = new EventEmitter(); /* $listener->on( 'hello', function( $data, $callback ){ print "Callback\n"; }); $listener->on( 'hello', function( $data, $callback ){ print "Callback 2\n"; }); $listener->on( 'hello', function( $data, $callback ){ print "Callback !!\n"; }); */ $remove_fn = function ($data, $callback) { print "Callback 3\n"; $callback(); }; $listener->on('hello', $remove_fn); $listener->emit('hello', 'second_arg', function () { print "emit_callback\n"; }); $listener->on('goodbye', function () { print "Goodbye world\n"; }); $listener->removeListener('hello', $remove_fn); $listener->emit('hello', 'second_arg', function () { print "emit_callback second time trhough\n"; }); $listener->emit('goodbye');
function testRemoveAllListenersNoArg() { $result = false; $callBack = function () use(&$result) { $result = true; }; $ee = new EventEmitter(); $ee->on('foo', $callBack); $ee->emit('foo'); $this->assertTrue($result); $result = false; $ee->removeAllListeners(); $ee->emit('foo'); $this->assertFalse($result); }
public function testPriorityListeners() { $sum = 0; $emitter = new EventEmitter(); $emitter->on('add', function () use(&$sum) { $sum <<= 1; }, -999); // low priority $emitter->on('add', function ($a, $b) use(&$sum) { $sum = $a + $b; }); $this->assertTrue($emitter->emit('add', [100, 200])); $this->assertSame(600, $sum); }