diff vendor/phpunit/php-code-coverage/src/Node/Directory.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/Directory.php	Mon Apr 23 09:46:53 2018 +0100
@@ -0,0 +1,483 @@
+<?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\InvalidArgumentException;
+
+/**
+ * Represents a directory in the code coverage information tree.
+ */
+class Directory extends AbstractNode implements \IteratorAggregate
+{
+    /**
+     * @var AbstractNode[]
+     */
+    private $children = [];
+
+    /**
+     * @var Directory[]
+     */
+    private $directories = [];
+
+    /**
+     * @var File[]
+     */
+    private $files = [];
+
+    /**
+     * @var array
+     */
+    private $classes;
+
+    /**
+     * @var array
+     */
+    private $traits;
+
+    /**
+     * @var array
+     */
+    private $functions;
+
+    /**
+     * @var array
+     */
+    private $linesOfCode = null;
+
+    /**
+     * @var int
+     */
+    private $numFiles = -1;
+
+    /**
+     * @var int
+     */
+    private $numExecutableLines = -1;
+
+    /**
+     * @var int
+     */
+    private $numExecutedLines = -1;
+
+    /**
+     * @var int
+     */
+    private $numClasses = -1;
+
+    /**
+     * @var int
+     */
+    private $numTestedClasses = -1;
+
+    /**
+     * @var int
+     */
+    private $numTraits = -1;
+
+    /**
+     * @var int
+     */
+    private $numTestedTraits = -1;
+
+    /**
+     * @var int
+     */
+    private $numMethods = -1;
+
+    /**
+     * @var int
+     */
+    private $numTestedMethods = -1;
+
+    /**
+     * @var int
+     */
+    private $numFunctions = -1;
+
+    /**
+     * @var int
+     */
+    private $numTestedFunctions = -1;
+
+    /**
+     * Returns the number of files in/under this node.
+     *
+     * @return int
+     */
+    public function count()
+    {
+        if ($this->numFiles == -1) {
+            $this->numFiles = 0;
+
+            foreach ($this->children as $child) {
+                $this->numFiles += \count($child);
+            }
+        }
+
+        return $this->numFiles;
+    }
+
+    /**
+     * Returns an iterator for this node.
+     *
+     * @return \RecursiveIteratorIterator
+     */
+    public function getIterator()
+    {
+        return new \RecursiveIteratorIterator(
+            new Iterator($this),
+            \RecursiveIteratorIterator::SELF_FIRST
+        );
+    }
+
+    /**
+     * Adds a new directory.
+     *
+     * @param string $name
+     *
+     * @return Directory
+     */
+    public function addDirectory($name)
+    {
+        $directory = new self($name, $this);
+
+        $this->children[]    = $directory;
+        $this->directories[] = &$this->children[\count($this->children) - 1];
+
+        return $directory;
+    }
+
+    /**
+     * Adds a new file.
+     *
+     * @param string $name
+     * @param array  $coverageData
+     * @param array  $testData
+     * @param bool   $cacheTokens
+     *
+     * @return File
+     *
+     * @throws InvalidArgumentException
+     */
+    public function addFile($name, array $coverageData, array $testData, $cacheTokens)
+    {
+        $file = new File(
+            $name,
+            $this,
+            $coverageData,
+            $testData,
+            $cacheTokens
+        );
+
+        $this->children[] = $file;
+        $this->files[]    = &$this->children[\count($this->children) - 1];
+
+        $this->numExecutableLines = -1;
+        $this->numExecutedLines   = -1;
+
+        return $file;
+    }
+
+    /**
+     * Returns the directories in this directory.
+     *
+     * @return array
+     */
+    public function getDirectories()
+    {
+        return $this->directories;
+    }
+
+    /**
+     * Returns the files in this directory.
+     *
+     * @return array
+     */
+    public function getFiles()
+    {
+        return $this->files;
+    }
+
+    /**
+     * Returns the child nodes of this node.
+     *
+     * @return array
+     */
+    public function getChildNodes()
+    {
+        return $this->children;
+    }
+
+    /**
+     * Returns the classes of this node.
+     *
+     * @return array
+     */
+    public function getClasses()
+    {
+        if ($this->classes === null) {
+            $this->classes = [];
+
+            foreach ($this->children as $child) {
+                $this->classes = \array_merge(
+                    $this->classes,
+                    $child->getClasses()
+                );
+            }
+        }
+
+        return $this->classes;
+    }
+
+    /**
+     * Returns the traits of this node.
+     *
+     * @return array
+     */
+    public function getTraits()
+    {
+        if ($this->traits === null) {
+            $this->traits = [];
+
+            foreach ($this->children as $child) {
+                $this->traits = \array_merge(
+                    $this->traits,
+                    $child->getTraits()
+                );
+            }
+        }
+
+        return $this->traits;
+    }
+
+    /**
+     * Returns the functions of this node.
+     *
+     * @return array
+     */
+    public function getFunctions()
+    {
+        if ($this->functions === null) {
+            $this->functions = [];
+
+            foreach ($this->children as $child) {
+                $this->functions = \array_merge(
+                    $this->functions,
+                    $child->getFunctions()
+                );
+            }
+        }
+
+        return $this->functions;
+    }
+
+    /**
+     * Returns the LOC/CLOC/NCLOC of this node.
+     *
+     * @return array
+     */
+    public function getLinesOfCode()
+    {
+        if ($this->linesOfCode === null) {
+            $this->linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0];
+
+            foreach ($this->children as $child) {
+                $linesOfCode = $child->getLinesOfCode();
+
+                $this->linesOfCode['loc'] += $linesOfCode['loc'];
+                $this->linesOfCode['cloc'] += $linesOfCode['cloc'];
+                $this->linesOfCode['ncloc'] += $linesOfCode['ncloc'];
+            }
+        }
+
+        return $this->linesOfCode;
+    }
+
+    /**
+     * Returns the number of executable lines.
+     *
+     * @return int
+     */
+    public function getNumExecutableLines()
+    {
+        if ($this->numExecutableLines == -1) {
+            $this->numExecutableLines = 0;
+
+            foreach ($this->children as $child) {
+                $this->numExecutableLines += $child->getNumExecutableLines();
+            }
+        }
+
+        return $this->numExecutableLines;
+    }
+
+    /**
+     * Returns the number of executed lines.
+     *
+     * @return int
+     */
+    public function getNumExecutedLines()
+    {
+        if ($this->numExecutedLines == -1) {
+            $this->numExecutedLines = 0;
+
+            foreach ($this->children as $child) {
+                $this->numExecutedLines += $child->getNumExecutedLines();
+            }
+        }
+
+        return $this->numExecutedLines;
+    }
+
+    /**
+     * Returns the number of classes.
+     *
+     * @return int
+     */
+    public function getNumClasses()
+    {
+        if ($this->numClasses == -1) {
+            $this->numClasses = 0;
+
+            foreach ($this->children as $child) {
+                $this->numClasses += $child->getNumClasses();
+            }
+        }
+
+        return $this->numClasses;
+    }
+
+    /**
+     * Returns the number of tested classes.
+     *
+     * @return int
+     */
+    public function getNumTestedClasses()
+    {
+        if ($this->numTestedClasses == -1) {
+            $this->numTestedClasses = 0;
+
+            foreach ($this->children as $child) {
+                $this->numTestedClasses += $child->getNumTestedClasses();
+            }
+        }
+
+        return $this->numTestedClasses;
+    }
+
+    /**
+     * Returns the number of traits.
+     *
+     * @return int
+     */
+    public function getNumTraits()
+    {
+        if ($this->numTraits == -1) {
+            $this->numTraits = 0;
+
+            foreach ($this->children as $child) {
+                $this->numTraits += $child->getNumTraits();
+            }
+        }
+
+        return $this->numTraits;
+    }
+
+    /**
+     * Returns the number of tested traits.
+     *
+     * @return int
+     */
+    public function getNumTestedTraits()
+    {
+        if ($this->numTestedTraits == -1) {
+            $this->numTestedTraits = 0;
+
+            foreach ($this->children as $child) {
+                $this->numTestedTraits += $child->getNumTestedTraits();
+            }
+        }
+
+        return $this->numTestedTraits;
+    }
+
+    /**
+     * Returns the number of methods.
+     *
+     * @return int
+     */
+    public function getNumMethods()
+    {
+        if ($this->numMethods == -1) {
+            $this->numMethods = 0;
+
+            foreach ($this->children as $child) {
+                $this->numMethods += $child->getNumMethods();
+            }
+        }
+
+        return $this->numMethods;
+    }
+
+    /**
+     * Returns the number of tested methods.
+     *
+     * @return int
+     */
+    public function getNumTestedMethods()
+    {
+        if ($this->numTestedMethods == -1) {
+            $this->numTestedMethods = 0;
+
+            foreach ($this->children as $child) {
+                $this->numTestedMethods += $child->getNumTestedMethods();
+            }
+        }
+
+        return $this->numTestedMethods;
+    }
+
+    /**
+     * Returns the number of functions.
+     *
+     * @return int
+     */
+    public function getNumFunctions()
+    {
+        if ($this->numFunctions == -1) {
+            $this->numFunctions = 0;
+
+            foreach ($this->children as $child) {
+                $this->numFunctions += $child->getNumFunctions();
+            }
+        }
+
+        return $this->numFunctions;
+    }
+
+    /**
+     * Returns the number of tested functions.
+     *
+     * @return int
+     */
+    public function getNumTestedFunctions()
+    {
+        if ($this->numTestedFunctions == -1) {
+            $this->numTestedFunctions = 0;
+
+            foreach ($this->children as $child) {
+                $this->numTestedFunctions += $child->getNumTestedFunctions();
+            }
+        }
+
+        return $this->numTestedFunctions;
+    }
+}