-
Notifications
You must be signed in to change notification settings - Fork 0
/
TemplateCoverageResult.php
63 lines (51 loc) · 1.85 KB
/
TemplateCoverageResult.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
namespace Thomann\TwigCodeCoverage;
use Twig\Source;
class TemplateCoverageResult {
private const EXECUTION_FLAG_CALLED = 1;
private const EXECUTION_FLAG_UNCALLED = -1;
private const EXECUTION_FLAG_UNCALLABLE = -2;
private string $templateName;
private array $codeCoverageLines;
/**
* @param string $templateName
* @param array $codeCoverageLines
* @internal
*/
function __construct(string $templateName, array $codeCoverageLines) {
$this->templateName = $templateName;
$this->codeCoverageLines = $codeCoverageLines;
}
function getTemplateName(): string {
return $this->templateName;
}
/**
* @return int[]
*/
function getCalledLines(): array {
return array_keys(array_filter($this->codeCoverageLines, fn(int $calledFlag) => $calledFlag === self::EXECUTION_FLAG_CALLED));
}
/**
* @return int[]
*/
function getUncalledLines(): array {
return array_keys(array_filter($this->codeCoverageLines, fn(int $calledFlag) => $calledFlag === self::EXECUTION_FLAG_UNCALLED));
}
/**
* @return array
*/
function getAllLinesByCallStatus() : array {
return $this->codeCoverageLines;
}
/**
* @return string value between 0 and 100, with a precision of 4
*/
function getCalledLinesPercentage(): string {
$calledLinesCount = count($this->getCalledLines());
$uncalledLinesCount = count($this->getUncalledLines());
if ($uncalledLinesCount === 0) {
return '0';
}
return round($calledLinesCount / ($calledLinesCount + $uncalledLinesCount), 4) * 100;
}
}