Вход Регистрация
Файл: vendor/phpunit/phpunit/src/Framework/TestSuiteIterator.php
Строк: 84
<?php declare(strict_types=1);
/*
 * This file is part of PHPUnit.
 *
 * (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 PHPUnitFramework;

use function 
assert;
use function 
count;
use 
RecursiveIterator;

/**
 * @template-implements RecursiveIterator<int, Test>
 *
 * @internal This class is not covered by the backward compatibility promise for PHPUnit
 */
final class TestSuiteIterator implements RecursiveIterator
{
    
/**
     * @var int
     */
    
private $position 0;

    
/**
     * @var Test[]
     */
    
private $tests;

    public function 
__construct(TestSuite $testSuite)
    {
        
$this->tests $testSuite->tests();
    }

    public function 
rewind(): void
    
{
        
$this->position 0;
    }

    public function 
valid(): bool
    
{
        return 
$this->position count($this->tests);
    }

    public function 
key(): int
    
{
        return 
$this->position;
    }

    public function 
current(): Test
    
{
        return 
$this->tests[$this->position];
    }

    public function 
next(): void
    
{
        
$this->position++;
    }

    
/**
     * @throws NoChildTestSuiteException
     */
    
public function getChildren(): self
    
{
        if (!
$this->hasChildren()) {
            throw new 
NoChildTestSuiteException(
                
'The current item is not a TestSuite instance and therefore does not have any children.'
            
);
        }

        
$current $this->current();

        
assert($current instanceof TestSuite);

        return new 
self($current);
    }

    public function 
hasChildren(): bool
    
{
        return 
$this->valid() && $this->current() instanceof TestSuite;
    }
}
Онлайн: 1
Реклама