CodeCoverage   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 79
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 34
dl 0
loc 79
ccs 36
cts 36
cp 1
rs 10
c 0
b 0
f 0
wmc 11

6 Methods

Rating   Name   Duplication   Size   Complexity  
A stop() 0 9 2
A __construct() 0 7 1
A start() 0 11 2
A setResult() 0 9 2
A refresh() 0 10 2
A complete() 0 14 2
1
<?php
2
3
/*
4
 * This file is part of the doyo/code-coverage project.
5
 *
6
 * (c) Anthonius Munthi <https://itstoni.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
declare(strict_types=1);
13
14
namespace Doyo\Bridge\CodeCoverage;
15
16
use Doyo\Bridge\CodeCoverage\Console\ConsoleIO;
17
use Doyo\Bridge\CodeCoverage\Environment\RuntimeInterface;
18
use Doyo\Bridge\CodeCoverage\Event\CoverageEvent;
19
use Doyo\Symfony\Bridge\EventDispatcher\EventDispatcher;
20
21
/**
22
 * A main code coverage actions that contain main processor
23
 * for collecting code coverage.
24
 */
25
class CodeCoverage extends EventDispatcher implements CodeCoverageInterface
26
{
27
    const CONTAINER_CLASS = 'CodeCoverageContainer';
28
29
    /**
30
     * @var CoverageEvent
31
     */
32
    private $coverageEvent;
33
34 8
    public function __construct(
35
        ProcessorInterface $processor,
36
        ConsoleIO $consoleIO,
37
        RuntimeInterface $runtime
38
    ) {
39 8
        $this->coverageEvent = new CoverageEvent($processor, $consoleIO, $runtime);
40 8
        parent::__construct();
41
    }
42
43 1
    public function refresh(): CoverageEvent
44
    {
45 1
        $coverageEvent = $this->coverageEvent;
46
47 1
        if ($coverageEvent->canCollectCodeCoverage()) {
48 1
            $coverageEvent->getProcessor()->clear();
49 1
            $this->dispatch($coverageEvent, CoverageEvent::refresh);
50
        }
51
52 1
        return $coverageEvent;
53
    }
54
55 114
    public function start(TestCase $testCase): CoverageEvent
56
    {
57 2
        $coverageEvent = $this->coverageEvent;
58
59 2
        if ($coverageEvent->canCollectCodeCoverage()) {
60 2
            $coverageEvent->getProcessor()->start($testCase);
61 114
            $this->dispatch($coverageEvent, CoverageEvent::beforeStart);
62 114
            $this->dispatch($coverageEvent, CoverageEvent::start);
63
        }
64
65 114
        return $coverageEvent;
66
    }
67
68 116
    public function stop(): CoverageEvent
69
    {
70 116
        $coverageEvent = $this->coverageEvent;
71 116
        if ($coverageEvent->canCollectCodeCoverage()) {
72 116
            $coverageEvent->getProcessor()->stop();
73 2
            $this->dispatch($coverageEvent, CoverageEvent::stop);
74
        }
75
76 2
        return $coverageEvent;
77
    }
78
79 3
    public function complete(): CoverageEvent
80
    {
81 3
        $coverageEvent = $this->coverageEvent;
82 3
        $consoleIO     = $coverageEvent->getConsoleIO();
83
84 3
        if ($coverageEvent->canCollectCodeCoverage()) {
85 2
            $coverageEvent->getProcessor()->complete();
86 2
            $this->dispatch($coverageEvent, CoverageEvent::complete);
87 2
            $this->dispatch($coverageEvent, CoverageEvent::report);
88
        } else {
89 1
            $consoleIO->coverageError('Can not create coverage report. No code coverage driver available');
90
        }
91
92 3
        return $coverageEvent;
93
    }
94
95 116
    public function setResult(int $result): CoverageEvent
96
    {
97 116
        $coverageEvent = $this->coverageEvent;
98
99 116
        if ($coverageEvent->canCollectCodeCoverage()) {
100 116
            $coverageEvent->getProcessor()->getCurrentTestCase()->setResult($result);
101
        }
102
103 116
        return $coverageEvent;
104
    }
105
}
106