示例#1
0
 public function testAttachAndDetach()
 {
     $subject1 = new TestSubject();
     $c = function () {
         return false;
     };
     $subject1->attachEventHandler('someEvent', $c);
     $this->assertFalse($subject1->triggerEvent('someEvent'));
     $subject1->detachEventHandler('someEvent', $c);
     $this->assertTrue($subject1->triggerEvent('someEvent'));
     $subject1->on('someEvent', $c);
     $this->assertFalse($subject1->triggerEvent('someEvent'));
     $this->assertFalse($subject1->triggerEvent('someEvent'));
     $subject1->detachEventHandler('someEvent', $c);
     $this->assertTrue($subject1->triggerEvent('someEvent'));
     $subject1->one('someEvent', $c);
     $this->assertFalse($subject1->triggerEvent('someEvent'));
     $this->assertTrue($subject1->triggerEvent('someEvent'));
     $this->assertThrows('Jivoo\\InvalidEventException', function () use($subject1) {
         $subject1->attachEventHandler('someOtherEvent', function () {
         });
     });
     $this->assertThrows('Jivoo\\InvalidEventException', function () use($subject1) {
         $subject1->triggerEvent('someOtherEvent');
     });
 }