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'); }); }