5 * Copyright (c) 2009-2011, Sebastian Bergmann <sb@sebastian-bergmann.de>.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
20 * * Neither the name of Sebastian Bergmann nor the names of his
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
38 * @package CodeCoverage
39 * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
40 * @copyright 2009-2011 Sebastian Bergmann <sb@sebastian-bergmann.de>
41 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
42 * @link http://github.com/sebastianbergmann/php-code-coverage
43 * @since File available since Release 1.1.0
47 * Base class for nodes in the code coverage information tree.
50 * @package CodeCoverage
51 * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
52 * @copyright 2009-2011 Sebastian Bergmann <sb@sebastian-bergmann.de>
53 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
54 * @version Release: 1.1.1
55 * @link http://github.com/sebastianbergmann/php-code-coverage
56 * @since Class available since Release 1.1.0
58 abstract class PHP_CodeCoverage_Report_Node implements Countable
76 * @var PHP_CodeCoverage_Report_Node
89 * @param PHP_CodeCoverage_Report_Node $parent
91 public function __construct($name, PHP_CodeCoverage_Report_Node $parent = NULL)
93 if (substr($name, -1) == '/') {
94 $name = substr($name, 0, -1);
98 $this->parent = $parent;
104 public function getName()
112 public function getId()
114 if ($this->id === NULL) {
115 $parent = $this->getParent();
117 if ($parent === NULL) {
120 $parentId = $parent->getId();
122 if ($parentId == 'index') {
123 $this->id = $this->name;
125 $this->id = $parentId . '_' . $this->name;
136 public function getPath()
138 if ($this->path === NULL) {
139 if ($this->parent === NULL) {
140 $this->path = $this->name;
142 $this->path = $this->parent->getPath() . '/' . $this->name;
152 public function getPathAsArray()
154 if ($this->pathArray === NULL) {
155 if ($this->parent === NULL) {
156 $this->pathArray = array();
158 $this->pathArray = $this->parent->getPathAsArray();
161 $this->pathArray[] = $this;
164 return $this->pathArray;
168 * @return PHP_CodeCoverage_Report_Node
170 public function getParent()
172 return $this->parent;
176 * Returns the percentage of classes that has been tested.
178 * @param boolean $asString
181 public function getTestedClassesPercent($asString = TRUE)
183 return PHP_CodeCoverage_Util::percent(
184 $this->getNumTestedClasses(),
185 $this->getNumClasses(),
191 * Returns the percentage of traits that has been tested.
193 * @param boolean $asString
196 public function getTestedTraitsPercent($asString = TRUE)
198 return PHP_CodeCoverage_Util::percent(
199 $this->getNumTestedTraits(),
200 $this->getNumTraits(),
206 * Returns the percentage of methods that has been tested.
208 * @param boolean $asString
211 public function getTestedMethodsPercent($asString = TRUE)
213 return PHP_CodeCoverage_Util::percent(
214 $this->getNumTestedMethods(),
215 $this->getNumMethods(),
221 * Returns the percentage of executed lines.
223 * @param boolean $asString
226 public function getLineExecutedPercent($asString = TRUE)
228 return PHP_CodeCoverage_Util::percent(
229 $this->getNumExecutedLines(),
230 $this->getNumExecutableLines(),
236 * Returns the classes of this node.
240 abstract public function getClasses();
243 * Returns the traits of this node.
247 abstract public function getTraits();
250 * Returns the functions of this node.
254 abstract public function getFunctions();
257 * Returns the LOC/CLOC/NCLOC of this node.
261 abstract public function getLinesOfCode();
264 * Returns the number of executable lines.
268 abstract public function getNumExecutableLines();
271 * Returns the number of executed lines.
275 abstract public function getNumExecutedLines();
278 * Returns the number of classes.
282 abstract public function getNumClasses();
285 * Returns the number of tested classes.
289 abstract public function getNumTestedClasses();
292 * Returns the number of traits.
296 abstract public function getNumTraits();
299 * Returns the number of tested traits.
303 abstract public function getNumTestedTraits();
306 * Returns the number of methods.
310 abstract public function getNumMethods();
313 * Returns the number of tested methods.
317 abstract public function getNumTestedMethods();
320 * Returns the number of functions.
324 abstract public function getNumFunctions();
327 * Returns the number of tested functions.
331 abstract public function getNumTestedFunctions();