public function testAttachAndDetach() { $subject1 = $this->getMockBuilder('Jivoo\\Core\\EventSubject')->getMock(); $subject1->method('getEvents')->willReturn(array('someEvent')); $subject2 = $this->getMockBuilder('Jivoo\\Core\\EventSubject')->getMock(); $subject2->method('getEvents')->willReturn(array('someEvent')); $em1 = new EventManager($subject1); $em2 = new EventManager($subject2, $em1); $c = function () { return false; }; $em1->attachHandler('someEvent', $c); $this->assertFalse($em1->trigger('someEvent')); $em1->detachHandler('someEvent', $c); $this->assertTrue($em1->trigger('someEvent')); $em2->attachHandler(get_class($subject1) . '.someEvent', $c); $this->assertFalse($em2->trigger(get_class($subject1) . '.someEvent')); $em2->detachHandler(get_class($subject1) . '.someEvent', $c); $this->assertTrue($em2->trigger(get_class($subject1) . '.someEvent')); $this->assertThrows('Jivoo\\Core\\EventException', function () use($em1) { $em1->attachHandler('someOtherEvent', null); }); $this->assertThrows('Jivoo\\Core\\EventException', function () use($em1) { $em1->trigger('someOtherEvent'); }); }
/** * {@inheritdoc} */ public function one($name, callable $callback) { $this->e->attachHandler($name, $callback, true); }