Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. AbstractNode.php

class AbstractNode

Same name in this branch
  1. 11.1.x vendor/symfony/css-selector/Node/AbstractNode.php \Symfony\Component\CssSelector\Node\AbstractNode

@internal This class is not covered by the backward compatibility promise for phpunit/php-code-coverage

@psalm-import-type LinesOfCodeType from \SebastianBergmann\CodeCoverage\StaticAnalysis\FileAnalyser @psalm-import-type ProcessedFunctionType from \SebastianBergmann\CodeCoverage\Node\File @psalm-import-type ProcessedClassType from \SebastianBergmann\CodeCoverage\Node\File @psalm-import-type ProcessedTraitType from \SebastianBergmann\CodeCoverage\Node\File

Hierarchy

  • class \SebastianBergmann\CodeCoverage\Node\AbstractNode implements \Countable

Expanded class hierarchy of AbstractNode

4 files declare their use of AbstractNode
Dashboard.php in vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Dashboard.php
Directory.php in vendor/phpunit/php-code-coverage/src/Report/Html/Renderer/Directory.php
Facade.php in vendor/phpunit/php-code-coverage/src/Report/Xml/Facade.php
Renderer.php in vendor/phpunit/php-code-coverage/src/Report/Html/Renderer.php

File

vendor/phpunit/php-code-coverage/src/Node/AbstractNode.php, line 28

Namespace

SebastianBergmann\CodeCoverage\Node
View source
abstract class AbstractNode implements Countable {
    private readonly string $name;
    private string $pathAsString;
    private array $pathAsArray;
    private readonly ?AbstractNode $parent;
    private string $id;
    public function __construct(string $name, ?self $parent = null) {
        if (str_ends_with($name, DIRECTORY_SEPARATOR)) {
            $name = substr($name, 0, -1);
        }
        $this->name = $name;
        $this->parent = $parent;
        $this->processId();
        $this->processPath();
    }
    public function name() : string {
        return $this->name;
    }
    public function id() : string {
        return $this->id;
    }
    public function pathAsString() : string {
        return $this->pathAsString;
    }
    public function pathAsArray() : array {
        return $this->pathAsArray;
    }
    public function parent() : ?self {
        return $this->parent;
    }
    public function percentageOfTestedClasses() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedClasses(), $this->numberOfClasses());
    }
    public function percentageOfTestedTraits() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedTraits(), $this->numberOfTraits());
    }
    public function percentageOfTestedClassesAndTraits() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedClassesAndTraits(), $this->numberOfClassesAndTraits());
    }
    public function percentageOfTestedFunctions() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedFunctions(), $this->numberOfFunctions());
    }
    public function percentageOfTestedMethods() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedMethods(), $this->numberOfMethods());
    }
    public function percentageOfTestedFunctionsAndMethods() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfTestedFunctionsAndMethods(), $this->numberOfFunctionsAndMethods());
    }
    public function percentageOfExecutedLines() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfExecutedLines(), $this->numberOfExecutableLines());
    }
    public function percentageOfExecutedBranches() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfExecutedBranches(), $this->numberOfExecutableBranches());
    }
    public function percentageOfExecutedPaths() : Percentage {
        return Percentage::fromFractionAndTotal($this->numberOfExecutedPaths(), $this->numberOfExecutablePaths());
    }
    public function numberOfClassesAndTraits() : int {
        return $this->numberOfClasses() + $this->numberOfTraits();
    }
    public function numberOfTestedClassesAndTraits() : int {
        return $this->numberOfTestedClasses() + $this->numberOfTestedTraits();
    }
    public function classesAndTraits() : array {
        return array_merge($this->classes(), $this->traits());
    }
    public function numberOfFunctionsAndMethods() : int {
        return $this->numberOfFunctions() + $this->numberOfMethods();
    }
    public function numberOfTestedFunctionsAndMethods() : int {
        return $this->numberOfTestedFunctions() + $this->numberOfTestedMethods();
    }
    
    /**
     * @psalm-return array<string, ProcessedClassType>
     */
    public abstract function classes() : array;
    
    /**
     * @psalm-return array<string, ProcessedTraitType>
     */
    public abstract function traits() : array;
    
    /**
     * @psalm-return array<string, ProcessedFunctionType>
     */
    public abstract function functions() : array;
    
    /**
     * @psalm-return LinesOfCodeType
     */
    public abstract function linesOfCode() : array;
    public abstract function numberOfExecutableLines() : int;
    public abstract function numberOfExecutedLines() : int;
    public abstract function numberOfExecutableBranches() : int;
    public abstract function numberOfExecutedBranches() : int;
    public abstract function numberOfExecutablePaths() : int;
    public abstract function numberOfExecutedPaths() : int;
    public abstract function numberOfClasses() : int;
    public abstract function numberOfTestedClasses() : int;
    public abstract function numberOfTraits() : int;
    public abstract function numberOfTestedTraits() : int;
    public abstract function numberOfMethods() : int;
    public abstract function numberOfTestedMethods() : int;
    public abstract function numberOfFunctions() : int;
    public abstract function numberOfTestedFunctions() : int;
    private function processId() : void {
        if ($this->parent === null) {
            $this->id = 'index';
            return;
        }
        $parentId = $this->parent
            ->id();
        if ($parentId === 'index') {
            $this->id = str_replace(':', '_', $this->name);
        }
        else {
            $this->id = $parentId . '/' . $this->name;
        }
    }
    private function processPath() : void {
        if ($this->parent === null) {
            $this->pathAsArray = [
                $this,
            ];
            $this->pathAsString = $this->name;
            return;
        }
        $this->pathAsArray = $this->parent
            ->pathAsArray();
        $this->pathAsString = $this->parent
            ->pathAsString() . DIRECTORY_SEPARATOR . $this->name;
        $this->pathAsArray[] = $this;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overrides
AbstractNode::$id private property
AbstractNode::$name private property
AbstractNode::$parent private property
AbstractNode::$pathAsArray private property
AbstractNode::$pathAsString private property
AbstractNode::classes abstract public function @psalm-return array&lt;string, ProcessedClassType&gt; 2
AbstractNode::classesAndTraits public function
AbstractNode::functions abstract public function @psalm-return array&lt;string, ProcessedFunctionType&gt; 2
AbstractNode::id public function
AbstractNode::linesOfCode abstract public function @psalm-return LinesOfCodeType 2
AbstractNode::name public function
AbstractNode::numberOfClasses abstract public function 2
AbstractNode::numberOfClassesAndTraits public function
AbstractNode::numberOfExecutableBranches abstract public function 2
AbstractNode::numberOfExecutableLines abstract public function 2
AbstractNode::numberOfExecutablePaths abstract public function 2
AbstractNode::numberOfExecutedBranches abstract public function 2
AbstractNode::numberOfExecutedLines abstract public function 2
AbstractNode::numberOfExecutedPaths abstract public function 2
AbstractNode::numberOfFunctions abstract public function 2
AbstractNode::numberOfFunctionsAndMethods public function
AbstractNode::numberOfMethods abstract public function 2
AbstractNode::numberOfTestedClasses abstract public function 2
AbstractNode::numberOfTestedClassesAndTraits public function
AbstractNode::numberOfTestedFunctions abstract public function 2
AbstractNode::numberOfTestedFunctionsAndMethods public function
AbstractNode::numberOfTestedMethods abstract public function 2
AbstractNode::numberOfTestedTraits abstract public function 2
AbstractNode::numberOfTraits abstract public function 2
AbstractNode::parent public function
AbstractNode::pathAsArray public function
AbstractNode::pathAsString public function
AbstractNode::percentageOfExecutedBranches public function
AbstractNode::percentageOfExecutedLines public function
AbstractNode::percentageOfExecutedPaths public function
AbstractNode::percentageOfTestedClasses public function
AbstractNode::percentageOfTestedClassesAndTraits public function
AbstractNode::percentageOfTestedFunctions public function
AbstractNode::percentageOfTestedFunctionsAndMethods public function
AbstractNode::percentageOfTestedMethods public function
AbstractNode::percentageOfTestedTraits public function
AbstractNode::processId private function
AbstractNode::processPath private function
AbstractNode::traits abstract public function @psalm-return array&lt;string, ProcessedTraitType&gt; 2
AbstractNode::__construct public function 1
RSS feed
Powered by Drupal