/** * Test the clearListeners method. * * @return void * * @covers Joomla\Event\Dispatcher::clearListeners * @since 1.0 */ public function testClearListeners() { $listener1 = new SomethingListener(); $listener2 = new SomethingListener(); $listener3 = new SomethingListener(); $this->instance->addListener($listener1)->addListener($listener2)->addListener($listener3); // Test without specified event. $this->instance->clearListeners(); $this->assertFalse($this->instance->hasListener($listener1)); $this->assertFalse($this->instance->hasListener($listener2)); $this->assertFalse($this->instance->hasListener($listener3)); // Test with an event specified. $this->instance->addListener($listener1)->addListener($listener2)->addListener($listener3); $this->instance->clearListeners('onSomething'); $this->assertTrue($this->instance->hasListener($listener1)); $this->assertTrue($this->instance->hasListener($listener2)); $this->assertTrue($this->instance->hasListener($listener3)); $this->assertFalse($this->instance->hasListener($listener1, 'onSomething')); $this->assertFalse($this->instance->hasListener($listener2, 'onSomething')); $this->assertFalse($this->instance->hasListener($listener3, 'onSomething')); // Test with a specified event object. $this->instance->clearListeners(new Event('onAfterSomething')); $this->assertTrue($this->instance->hasListener($listener1)); $this->assertTrue($this->instance->hasListener($listener2)); $this->assertTrue($this->instance->hasListener($listener3)); $this->assertFalse($this->instance->hasListener($listener1, 'onAfterSomething')); $this->assertFalse($this->instance->hasListener($listener2, 'onAfterSomething')); $this->assertFalse($this->instance->hasListener($listener3, 'onAfterSomething')); }
/** * Test the clearListeners method. * * @return void * * @since 1.0 */ public function testClearListeners() { // Add 3 listeners listening to the same events. $listener1 = new SomethingListener(); $listener2 = new SomethingListener(); $listener3 = new SomethingListener(); $this->instance->addListener('onBeforeSomething', [$listener1, 'onBeforeSomething'])->addListener('onSomething', [$listener1, 'onSomething'])->addListener('onAfterSomething', [$listener1, 'onAfterSomething'])->addListener('onBeforeSomething', [$listener2, 'onBeforeSomething'])->addListener('onSomething', [$listener2, 'onSomething'])->addListener('onAfterSomething', [$listener2, 'onAfterSomething'])->addListener('onBeforeSomething', [$listener3, 'onBeforeSomething'])->addListener('onSomething', [$listener3, 'onSomething'])->addListener('onAfterSomething', [$listener3, 'onAfterSomething']); // Test without specified event. $this->instance->clearListeners(); $this->assertFalse($this->instance->hasListener([$listener1, 'onBeforeSomething'])); $this->assertFalse($this->instance->hasListener([$listener2, 'onSomething'])); $this->assertFalse($this->instance->hasListener([$listener3, 'onAfterSomething'])); // Test with an event specified. $this->instance->addListener('onBeforeSomething', [$listener1, 'onBeforeSomething'])->addListener('onSomething', [$listener1, 'onSomething'])->addListener('onAfterSomething', [$listener1, 'onAfterSomething'])->addListener('onBeforeSomething', [$listener2, 'onBeforeSomething'])->addListener('onSomething', [$listener2, 'onSomething'])->addListener('onAfterSomething', [$listener2, 'onAfterSomething'])->addListener('onBeforeSomething', [$listener3, 'onBeforeSomething'])->addListener('onSomething', [$listener3, 'onSomething'])->addListener('onAfterSomething', [$listener3, 'onAfterSomething']); $this->instance->clearListeners('onSomething'); $this->assertTrue($this->instance->hasListener([$listener1, 'onBeforeSomething'])); $this->assertFalse($this->instance->hasListener([$listener2, 'onSomething'])); $this->assertTrue($this->instance->hasListener([$listener3, 'onAfterSomething'])); $this->assertFalse($this->instance->hasListener([$listener1, 'onSomething'])); $this->assertFalse($this->instance->hasListener([$listener3, 'onSomething'])); }