Version 1
[yaffs-website] / vendor / phpunit / php-code-coverage / src / CodeCoverage / Report / Node / Directory.php
diff --git a/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php b/vendor/phpunit/php-code-coverage/src/CodeCoverage/Report/Node/Directory.php
new file mode 100644 (file)
index 0000000..dd71ecb
--- /dev/null
@@ -0,0 +1,478 @@
+<?php
+/*
+ * This file is part of the PHP_CodeCoverage 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.
+ */
+
+/**
+ * Represents a directory in the code coverage information tree.
+ *
+ * @since Class available since Release 1.1.0
+ */
+class PHP_CodeCoverage_Report_Node_Directory extends PHP_CodeCoverage_Report_Node implements IteratorAggregate
+{
+    /**
+     * @var PHP_CodeCoverage_Report_Node[]
+     */
+    protected $children = array();
+
+    /**
+     * @var PHP_CodeCoverage_Report_Node_Directory[]
+     */
+    protected $directories = array();
+
+    /**
+     * @var PHP_CodeCoverage_Report_Node_File[]
+     */
+    protected $files = array();
+
+    /**
+     * @var array
+     */
+    protected $classes;
+
+    /**
+     * @var array
+     */
+    protected $traits;
+
+    /**
+     * @var array
+     */
+    protected $functions;
+
+    /**
+     * @var array
+     */
+    protected $linesOfCode = null;
+
+    /**
+     * @var int
+     */
+    protected $numFiles = -1;
+
+    /**
+     * @var int
+     */
+    protected $numExecutableLines = -1;
+
+    /**
+     * @var int
+     */
+    protected $numExecutedLines = -1;
+
+    /**
+     * @var int
+     */
+    protected $numClasses = -1;
+
+    /**
+     * @var int
+     */
+    protected $numTestedClasses = -1;
+
+    /**
+     * @var int
+     */
+    protected $numTraits = -1;
+
+    /**
+     * @var int
+     */
+    protected $numTestedTraits = -1;
+
+    /**
+     * @var int
+     */
+    protected $numMethods = -1;
+
+    /**
+     * @var int
+     */
+    protected $numTestedMethods = -1;
+
+    /**
+     * @var int
+     */
+    protected $numFunctions = -1;
+
+    /**
+     * @var int
+     */
+    protected $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 PHP_CodeCoverage_Report_Node_Iterator($this),
+            RecursiveIteratorIterator::SELF_FIRST
+        );
+    }
+
+    /**
+     * Adds a new directory.
+     *
+     * @param  string                                 $name
+     * @return PHP_CodeCoverage_Report_Node_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 PHP_CodeCoverage_Report_Node_File
+     * @throws PHP_CodeCoverage_Exception
+     */
+    public function addFile($name, array $coverageData, array $testData, $cacheTokens)
+    {
+        $file = new PHP_CodeCoverage_Report_Node_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 = array();
+
+            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 = array();
+
+            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 = array();
+
+            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 = array('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;
+    }
+}