comparison vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2 /*
3 * This file is part of the PHP_CodeCoverage package.
4 *
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11 /**
12 * Base class for nodes in the code coverage information tree.
13 *
14 * @since Class available since Release 1.1.0
15 */
16 abstract class PHP_CodeCoverage_Report_Node implements Countable
17 {
18 /**
19 * @var string
20 */
21 protected $name;
22
23 /**
24 * @var string
25 */
26 protected $path;
27
28 /**
29 * @var array
30 */
31 protected $pathArray;
32
33 /**
34 * @var PHP_CodeCoverage_Report_Node
35 */
36 protected $parent;
37
38 /**
39 * @var string
40 */
41 protected $id;
42
43 /**
44 * Constructor.
45 *
46 * @param string $name
47 * @param PHP_CodeCoverage_Report_Node $parent
48 */
49 public function __construct($name, PHP_CodeCoverage_Report_Node $parent = null)
50 {
51 if (substr($name, -1) == '/') {
52 $name = substr($name, 0, -1);
53 }
54
55 $this->name = $name;
56 $this->parent = $parent;
57 }
58
59 /**
60 * @return string
61 */
62 public function getName()
63 {
64 return $this->name;
65 }
66
67 /**
68 * @return string
69 */
70 public function getId()
71 {
72 if ($this->id === null) {
73 $parent = $this->getParent();
74
75 if ($parent === null) {
76 $this->id = 'index';
77 } else {
78 $parentId = $parent->getId();
79
80 if ($parentId == 'index') {
81 $this->id = str_replace(':', '_', $this->name);
82 } else {
83 $this->id = $parentId . '/' . $this->name;
84 }
85 }
86 }
87
88 return $this->id;
89 }
90
91 /**
92 * @return string
93 */
94 public function getPath()
95 {
96 if ($this->path === null) {
97 if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) {
98 $this->path = $this->name;
99 } else {
100 $this->path = $this->parent->getPath() . '/' . $this->name;
101 }
102 }
103
104 return $this->path;
105 }
106
107 /**
108 * @return array
109 */
110 public function getPathAsArray()
111 {
112 if ($this->pathArray === null) {
113 if ($this->parent === null) {
114 $this->pathArray = array();
115 } else {
116 $this->pathArray = $this->parent->getPathAsArray();
117 }
118
119 $this->pathArray[] = $this;
120 }
121
122 return $this->pathArray;
123 }
124
125 /**
126 * @return PHP_CodeCoverage_Report_Node
127 */
128 public function getParent()
129 {
130 return $this->parent;
131 }
132
133 /**
134 * Returns the percentage of classes that has been tested.
135 *
136 * @param bool $asString
137 * @return int
138 */
139 public function getTestedClassesPercent($asString = true)
140 {
141 return PHP_CodeCoverage_Util::percent(
142 $this->getNumTestedClasses(),
143 $this->getNumClasses(),
144 $asString
145 );
146 }
147
148 /**
149 * Returns the percentage of traits that has been tested.
150 *
151 * @param bool $asString
152 * @return int
153 */
154 public function getTestedTraitsPercent($asString = true)
155 {
156 return PHP_CodeCoverage_Util::percent(
157 $this->getNumTestedTraits(),
158 $this->getNumTraits(),
159 $asString
160 );
161 }
162
163 /**
164 * Returns the percentage of traits that has been tested.
165 *
166 * @param bool $asString
167 * @return int
168 * @since Method available since Release 1.2.0
169 */
170 public function getTestedClassesAndTraitsPercent($asString = true)
171 {
172 return PHP_CodeCoverage_Util::percent(
173 $this->getNumTestedClassesAndTraits(),
174 $this->getNumClassesAndTraits(),
175 $asString
176 );
177 }
178
179 /**
180 * Returns the percentage of methods that has been tested.
181 *
182 * @param bool $asString
183 * @return int
184 */
185 public function getTestedMethodsPercent($asString = true)
186 {
187 return PHP_CodeCoverage_Util::percent(
188 $this->getNumTestedMethods(),
189 $this->getNumMethods(),
190 $asString
191 );
192 }
193
194 /**
195 * Returns the percentage of executed lines.
196 *
197 * @param bool $asString
198 * @return int
199 */
200 public function getLineExecutedPercent($asString = true)
201 {
202 return PHP_CodeCoverage_Util::percent(
203 $this->getNumExecutedLines(),
204 $this->getNumExecutableLines(),
205 $asString
206 );
207 }
208
209 /**
210 * Returns the number of classes and traits.
211 *
212 * @return int
213 * @since Method available since Release 1.2.0
214 */
215 public function getNumClassesAndTraits()
216 {
217 return $this->getNumClasses() + $this->getNumTraits();
218 }
219
220 /**
221 * Returns the number of tested classes and traits.
222 *
223 * @return int
224 * @since Method available since Release 1.2.0
225 */
226 public function getNumTestedClassesAndTraits()
227 {
228 return $this->getNumTestedClasses() + $this->getNumTestedTraits();
229 }
230
231 /**
232 * Returns the classes and traits of this node.
233 *
234 * @return array
235 * @since Method available since Release 1.2.0
236 */
237 public function getClassesAndTraits()
238 {
239 return array_merge($this->getClasses(), $this->getTraits());
240 }
241
242 /**
243 * Returns the classes of this node.
244 *
245 * @return array
246 */
247 abstract public function getClasses();
248
249 /**
250 * Returns the traits of this node.
251 *
252 * @return array
253 */
254 abstract public function getTraits();
255
256 /**
257 * Returns the functions of this node.
258 *
259 * @return array
260 */
261 abstract public function getFunctions();
262
263 /**
264 * Returns the LOC/CLOC/NCLOC of this node.
265 *
266 * @return array
267 */
268 abstract public function getLinesOfCode();
269
270 /**
271 * Returns the number of executable lines.
272 *
273 * @return int
274 */
275 abstract public function getNumExecutableLines();
276
277 /**
278 * Returns the number of executed lines.
279 *
280 * @return int
281 */
282 abstract public function getNumExecutedLines();
283
284 /**
285 * Returns the number of classes.
286 *
287 * @return int
288 */
289 abstract public function getNumClasses();
290
291 /**
292 * Returns the number of tested classes.
293 *
294 * @return int
295 */
296 abstract public function getNumTestedClasses();
297
298 /**
299 * Returns the number of traits.
300 *
301 * @return int
302 */
303 abstract public function getNumTraits();
304
305 /**
306 * Returns the number of tested traits.
307 *
308 * @return int
309 */
310 abstract public function getNumTestedTraits();
311
312 /**
313 * Returns the number of methods.
314 *
315 * @return int
316 */
317 abstract public function getNumMethods();
318
319 /**
320 * Returns the number of tested methods.
321 *
322 * @return int
323 */
324 abstract public function getNumTestedMethods();
325
326 /**
327 * Returns the number of functions.
328 *
329 * @return int
330 */
331 abstract public function getNumFunctions();
332
333 /**
334 * Returns the number of tested functions.
335 *
336 * @return int
337 */
338 abstract public function getNumTestedFunctions();
339 }