diff vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php @ 14:1fec387a4317

Update Drupal core to 8.5.2 via Composer
author Chris Cannam
date Mon, 23 Apr 2018 09:46:53 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php	Mon Apr 23 09:46:53 2018 +0100
@@ -0,0 +1,404 @@
+<?php
+/*
+ * This file is part of the php-code-coverage package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace SebastianBergmann\CodeCoverage\Node;
+
+use SebastianBergmann\CodeCoverage\Util;
+
+/**
+ * Base class for nodes in the code coverage information tree.
+ */
+abstract class AbstractNode implements \Countable
+{
+    /**
+     * @var string
+     */
+    private $name;
+
+    /**
+     * @var string
+     */
+    private $path;
+
+    /**
+     * @var array
+     */
+    private $pathArray;
+
+    /**
+     * @var AbstractNode
+     */
+    private $parent;
+
+    /**
+     * @var string
+     */
+    private $id;
+
+    /**
+     * Constructor.
+     *
+     * @param string       $name
+     * @param AbstractNode $parent
+     */
+    public function __construct($name, self $parent = null)
+    {
+        if (\substr($name, -1) == '/') {
+            $name = \substr($name, 0, -1);
+        }
+
+        $this->name   = $name;
+        $this->parent = $parent;
+    }
+
+    /**
+     * @return string
+     */
+    public function getName()
+    {
+        return $this->name;
+    }
+
+    /**
+     * @return string
+     */
+    public function getId()
+    {
+        if ($this->id === null) {
+            $parent = $this->getParent();
+
+            if ($parent === null) {
+                $this->id = 'index';
+            } else {
+                $parentId = $parent->getId();
+
+                if ($parentId == 'index') {
+                    $this->id = \str_replace(':', '_', $this->name);
+                } else {
+                    $this->id = $parentId . '/' . $this->name;
+                }
+            }
+        }
+
+        return $this->id;
+    }
+
+    /**
+     * @return string
+     */
+    public function getPath()
+    {
+        if ($this->path === null) {
+            if ($this->parent === null || $this->parent->getPath() === null || $this->parent->getPath() === false) {
+                $this->path = $this->name;
+            } else {
+                $this->path = $this->parent->getPath() . '/' . $this->name;
+            }
+        }
+
+        return $this->path;
+    }
+
+    /**
+     * @return array
+     */
+    public function getPathAsArray()
+    {
+        if ($this->pathArray === null) {
+            if ($this->parent === null) {
+                $this->pathArray = [];
+            } else {
+                $this->pathArray = $this->parent->getPathAsArray();
+            }
+
+            $this->pathArray[] = $this;
+        }
+
+        return $this->pathArray;
+    }
+
+    /**
+     * @return AbstractNode
+     */
+    public function getParent()
+    {
+        return $this->parent;
+    }
+
+    /**
+     * Returns the percentage of classes that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedClassesPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedClasses(),
+            $this->getNumClasses(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of traits that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedTraitsPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedTraits(),
+            $this->getNumTraits(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of classes and traits that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedClassesAndTraitsPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedClassesAndTraits(),
+            $this->getNumClassesAndTraits(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of functions that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedFunctionsPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedFunctions(),
+            $this->getNumFunctions(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of methods that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedMethodsPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedMethods(),
+            $this->getNumMethods(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of functions and methods that has been tested.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getTestedFunctionsAndMethodsPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumTestedFunctionsAndMethods(),
+            $this->getNumFunctionsAndMethods(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the percentage of executed lines.
+     *
+     * @param bool $asString
+     *
+     * @return int
+     */
+    public function getLineExecutedPercent($asString = true)
+    {
+        return Util::percent(
+            $this->getNumExecutedLines(),
+            $this->getNumExecutableLines(),
+            $asString
+        );
+    }
+
+    /**
+     * Returns the number of classes and traits.
+     *
+     * @return int
+     */
+    public function getNumClassesAndTraits()
+    {
+        return $this->getNumClasses() + $this->getNumTraits();
+    }
+
+    /**
+     * Returns the number of tested classes and traits.
+     *
+     * @return int
+     */
+    public function getNumTestedClassesAndTraits()
+    {
+        return $this->getNumTestedClasses() + $this->getNumTestedTraits();
+    }
+
+    /**
+     * Returns the classes and traits of this node.
+     *
+     * @return array
+     */
+    public function getClassesAndTraits()
+    {
+        return \array_merge($this->getClasses(), $this->getTraits());
+    }
+
+    /**
+     * Returns the number of functions and methods.
+     *
+     * @return int
+     */
+    public function getNumFunctionsAndMethods()
+    {
+        return $this->getNumFunctions() + $this->getNumMethods();
+    }
+
+    /**
+     * Returns the number of tested functions and methods.
+     *
+     * @return int
+     */
+    public function getNumTestedFunctionsAndMethods()
+    {
+        return $this->getNumTestedFunctions() + $this->getNumTestedMethods();
+    }
+
+    /**
+     * Returns the functions and methods of this node.
+     *
+     * @return array
+     */
+    public function getFunctionsAndMethods()
+    {
+        return \array_merge($this->getFunctions(), $this->getMethods());
+    }
+
+    /**
+     * Returns the classes of this node.
+     *
+     * @return array
+     */
+    abstract public function getClasses();
+
+    /**
+     * Returns the traits of this node.
+     *
+     * @return array
+     */
+    abstract public function getTraits();
+
+    /**
+     * Returns the functions of this node.
+     *
+     * @return array
+     */
+    abstract public function getFunctions();
+
+    /**
+     * Returns the LOC/CLOC/NCLOC of this node.
+     *
+     * @return array
+     */
+    abstract public function getLinesOfCode();
+
+    /**
+     * Returns the number of executable lines.
+     *
+     * @return int
+     */
+    abstract public function getNumExecutableLines();
+
+    /**
+     * Returns the number of executed lines.
+     *
+     * @return int
+     */
+    abstract public function getNumExecutedLines();
+
+    /**
+     * Returns the number of classes.
+     *
+     * @return int
+     */
+    abstract public function getNumClasses();
+
+    /**
+     * Returns the number of tested classes.
+     *
+     * @return int
+     */
+    abstract public function getNumTestedClasses();
+
+    /**
+     * Returns the number of traits.
+     *
+     * @return int
+     */
+    abstract public function getNumTraits();
+
+    /**
+     * Returns the number of tested traits.
+     *
+     * @return int
+     */
+    abstract public function getNumTestedTraits();
+
+    /**
+     * Returns the number of methods.
+     *
+     * @return int
+     */
+    abstract public function getNumMethods();
+
+    /**
+     * Returns the number of tested methods.
+     *
+     * @return int
+     */
+    abstract public function getNumTestedMethods();
+
+    /**
+     * Returns the number of functions.
+     *
+     * @return int
+     */
+    abstract public function getNumFunctions();
+
+    /**
+     * Returns the number of tested functions.
+     *
+     * @return int
+     */
+    abstract public function getNumTestedFunctions();
+}