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