Passed
Push — master ( 31d344...83ac3f )
by Alexander
01:22
created

CompositeTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 14
dl 0
loc 33
rs 10
c 0
b 0
f 0
wmc 3

4 Methods

Rating   Name   Duplication   Size   Complexity  
testProvidesAllListeners() 0 31 ?
A hp$1 ➔ getListenersForEvent() 0 4 1
A hp$1 ➔ testProvidesAllListeners() 0 31 2
A hp$0 ➔ getListenersForEvent() 0 4 1
1
<?php
2
3
namespace Yiisoft\EventDispatcher\Tests\Provider;
4
5
use PHPUnit\Framework\TestCase;
6
use Psr\EventDispatcher\ListenerProviderInterface;
7
use Yiisoft\EventDispatcher\Provider\CompositeProvider;
8
use Yiisoft\EventDispatcher\Tests\Event\Event;
9
10
class CompositeTest extends TestCase
11
{
12
    public function testProvidesAllListeners(): void
13
    {
14
        $event = new Event();
15
16
        $provider1 = new class() implements ListenerProviderInterface {
17
            public function getListenersForEvent(object $event): iterable
18
            {
19
                yield function (Event $event) {
20
                    $event->register(1);
21
                };
22
            }
23
        };
24
25
        $provider2 = new class() implements ListenerProviderInterface {
26
            public function getListenersForEvent(object $event): iterable
27
            {
28
                yield function (Event $event) {
29
                    $event->register(2);
30
                };
31
            }
32
        };
33
34
        $aggregate = new CompositeProvider();
35
36
        $aggregate->attach($provider1);
37
        $aggregate->attach($provider2);
38
39
        foreach ($aggregate->getListenersForEvent($event) as $listener) {
40
            $listener($event);
41
        }
42
        $this->assertEquals([1, 2], $event->registered());
43
    }
44
}
45