Passed
Branch master (9c9e82)
by ANTHONIUS
01:35
created

CodeCoverage::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 3
dl 0
loc 8
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
4
namespace Doyo\Bridge\CodeCoverage;
5
6
use Doyo\Bridge\CodeCoverage\Console\ConsoleIO;
7
use Doyo\Bridge\CodeCoverage\Environment\RuntimeInterface;
8
use Doyo\Bridge\CodeCoverage\Event\CoverageEvent;
9
use Doyo\Symfony\Bridge\EventDispatcher\EventDispatcher;
10
11
/**
12
 * A main code coverage actions that contain main processor
13
 * for collecting code coverage
14
 */
15
class CodeCoverage extends EventDispatcher
16
{
17
    /**
18
     * @var CoverageEvent
19
     */
20
    private $coverageEvent;
21
22 5
    public function __construct(
23
        ProcessorInterface $processor,
24
        ConsoleIO $consoleIO,
25
        RuntimeInterface $runtime
26
    )
27
    {
28 5
        $this->coverageEvent = new CoverageEvent($processor, $consoleIO, $runtime);
29 5
        parent::__construct();
30
    }
31
32 1
    public function refresh()
33
    {
34 1
        $coverageEvent = $this->coverageEvent;
35
36 1
        if($coverageEvent->canCollectCodeCoverage()){
37 1
            $coverageEvent->getProcessor()->clear();
38 1
            $this->dispatch($coverageEvent, CoverageEvent::refresh);
39
        }
40
41 1
        return $coverageEvent;
42
    }
43
44 62
    public function start(TestCase $testCase)
45
    {
46 1
        $coverageEvent = $this->coverageEvent;
47
48 1
        if($coverageEvent->canCollectCodeCoverage()){
49 1
            $coverageEvent->getProcessor()->start($testCase);
50 62
            $this->dispatch($coverageEvent, CoverageEvent::beforeStart);
51 62
            $this->dispatch($coverageEvent, CoverageEvent::start);
52
        }
53
54 62
        return $coverageEvent;
55
    }
56
57 64
    public function stop()
58
    {
59 64
        $coverageEvent = $this->coverageEvent;
60 64
        if($coverageEvent->canCollectCodeCoverage()){
61 64
            $coverageEvent->getProcessor()->stop();
62 1
            $this->dispatch($coverageEvent, CoverageEvent::stop);
63
        }
64
65 1
        return $coverageEvent;
66
    }
67
68 1
    public function complete()
69
    {
70 1
        $coverageEvent = $this->coverageEvent;
71 1
        $consoleIO = $coverageEvent->getConsoleIO();
72
73 1
        if($coverageEvent->canCollectCodeCoverage()){
74 1
            $coverageEvent->getProcessor()->complete();
75 1
            $this->dispatch($coverageEvent, CoverageEvent::complete);
76 1
            $this->dispatch($coverageEvent, CoverageEvent::report);
77
        }else{
78
            $consoleIO->coverageError('Can not create coverage report. No code coverage driver available');
79
        }
80
81 1
        return $coverageEvent;
82
    }
83
84
    public function setResult(int $result)
85
    {
86
        $coverageEvent = $this->coverageEvent;
87
        if($coverageEvent->canCollectCodeCoverage()){
88
            $coverageEvent->getProcessor()->getCurrentTestCase()->setResult($result);
89
        }
90
    }
91
}
92