Buckets:
| declare(strict_types=1); | |
| /* | |
| * This file is part of phpunit/php-code-coverage. | |
| * | |
| * (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 const DIRECTORY_SEPARATOR; | |
| use function array_merge; | |
| use function str_ends_with; | |
| use function str_replace; | |
| use function substr; | |
| use Countable; | |
| use SebastianBergmann\CodeCoverage\Util\Percentage; | |
| /** | |
| * @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 | |
| */ | |
| 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> | |
| */ | |
| abstract public function classes(): array; | |
| /** | |
| * @psalm-return array<string, ProcessedTraitType> | |
| */ | |
| abstract public function traits(): array; | |
| /** | |
| * @psalm-return array<string, ProcessedFunctionType> | |
| */ | |
| abstract public function functions(): array; | |
| /** | |
| * @psalm-return LinesOfCodeType | |
| */ | |
| abstract public function linesOfCode(): array; | |
| abstract public function numberOfExecutableLines(): int; | |
| abstract public function numberOfExecutedLines(): int; | |
| abstract public function numberOfExecutableBranches(): int; | |
| abstract public function numberOfExecutedBranches(): int; | |
| abstract public function numberOfExecutablePaths(): int; | |
| abstract public function numberOfExecutedPaths(): int; | |
| abstract public function numberOfClasses(): int; | |
| abstract public function numberOfTestedClasses(): int; | |
| abstract public function numberOfTraits(): int; | |
| abstract public function numberOfTestedTraits(): int; | |
| abstract public function numberOfMethods(): int; | |
| abstract public function numberOfTestedMethods(): int; | |
| abstract public function numberOfFunctions(): int; | |
| abstract public 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; | |
| } | |
| } | |
Xet Storage Details
- Size:
- 6.77 kB
- Xet hash:
- 582abaf9354af541c3cf476d742ac9e9c70989dc36d0ee97538130802624c3fd
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.