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));
 }
Example #3
0
 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);
 }
Example #6
0
 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);
 }
Example #8
0
<?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');
Example #9
0
 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);
 }