1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
<?php
namespace Sabre\Event;
class ContinueCallbackTest extends \PHPUnit_Framework_TestCase {
function testContinueCallBack() {
$ee = new EventEmitter();
$handlerCounter = 0;
$bla = function() use (&$handlerCounter) {
$handlerCounter++;
};
$ee->on('foo', $bla);
$ee->on('foo', $bla);
$ee->on('foo', $bla);
$continueCounter = 0;
$r = $ee->emit('foo', [], function() use (&$continueCounter) {
$continueCounter++;
return true;
});
$this->assertTrue($r);
$this->assertEquals(3, $handlerCounter);
$this->assertEquals(2, $continueCounter);
}
function testContinueCallBackBreak() {
$ee = new EventEmitter();
$handlerCounter = 0;
$bla = function() use (&$handlerCounter) {
$handlerCounter++;
};
$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->assertTrue($r);
$this->assertEquals(1, $handlerCounter);
$this->assertEquals(1, $continueCounter);
}
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);
}
}
|