Passed
Push — 26-use-psr-14-event-dispatcher ( ab95da )
by Jakub
02:36
created

TesterEventDispatcherTest::testDispatch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 26
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 22
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 1
eloc 20
c 1
b 0
f 1
nc 1
nop 0
dl 0
loc 26
ccs 22
cts 23
cp 0.9565
crap 1
rs 9.6
1
<?php
2
declare(strict_types=1);
3
4
namespace MyTester;
5
6
use MyTester\Attributes\TestSuite;
7
8
/**
9
 * Test suite for class TesterEventDispatcher
10
 *
11
 * @author Jakub Konečný
12
 */
13
#[TestSuite("TesterEventDispatcher")]
14
final class TesterEventDispatcherTest extends TestCase
15
{
16
    public function testDispatch(): void
17
    {
18 1
        $event = new Events\TestsStartedEvent([]);
19 1
        $var = 0;
20 1
        $listenerProvider = new TesterListenerProvider([]);
21 1
        $listenerProvider->registerListener($event::class, function () use (&$var) {
22 1
            $var++;
23 1
        });
24 1
        $eventDispatcher = new TesterEventDispatcher($listenerProvider);
25 1
        $this->assertSame($event, $eventDispatcher->dispatch($event));
26 1
        $this->assertSame(1, $var);
27
28 1
        $event = new Events\TestStoppableEvent();
29 1
        $var = 0;
30 1
        $listenerProvider = new TesterListenerProvider([]);
31 1
        $listenerProvider->registerListener($event::class, function (Events\TestStoppableEvent $event) use (&$var) {
32 1
            $var++;
33 1
            $event->stopped = true;
34 1
        });
35 1
        $listenerProvider->registerListener($event::class, function (Events\TestStoppableEvent $event) use (&$var) {
36
            $var++;
37 1
        });
38 1
        $eventDispatcher = new TesterEventDispatcher($listenerProvider);
39 1
        $this->assertSame($event, $eventDispatcher->dispatch($event));
40 1
        $this->assertSame(1, $var);
41 1
        $this->assertTrue($event->stopped);
42 1
    }
43
}
44