1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
<?php
declare(strict_types=1);
namespace phpDocumentor\Reflection\PseudoTypes;
use phpDocumentor\Reflection\Fqsen;
use phpDocumentor\Reflection\Types\Array_;
use phpDocumentor\Reflection\Types\Integer;
use phpDocumentor\Reflection\Types\Object_;
use phpDocumentor\Reflection\Types\Static_;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
/**
* @coversDefaultClass \phpDocumentor\Reflection\PseudoTypes\Conditional
*/
class ConditionalTest extends TestCase
{
/**
* @covers ::isNegated
* @covers ::getSubjectType
* @covers ::getTargetType
* @covers ::getIf
* @covers ::getElse
*/
public function testCreate(): void
{
$subjectType = new Object_(new Fqsen('\\phpDocumentor\\T'));
$targetType = new Integer();
$if = new Static_();
$else = new Array_(new Static_());
$type = new Conditional(false, $subjectType, $targetType, $if, $else);
$this->assertFalse($type->isNegated());
$this->assertSame($subjectType, $type->getSubjectType());
$this->assertSame($targetType, $type->getTargetType());
$this->assertSame($if, $type->getIf());
$this->assertSame($else, $type->getElse());
}
/**
* @covers ::__toString
*/
#[DataProvider('provideToStringData')]
public function testToString(string $expectedResult, Conditional $type): void
{
$this->assertSame($expectedResult, (string) $type);
}
/**
* @return array<string, array{string, Conditional}>
*/
public static function provideToStringData(): array
{
return [
'basic' => [
'(\\phpDocumentor\\T is int ? static : static[])',
new Conditional(
false,
new Object_(new Fqsen('\\phpDocumentor\\T')),
new Integer(),
new Static_(),
new Array_(new Static_())
),
],
'negated' => [
'(\\phpDocumentor\\T is not int ? static : static[])',
new Conditional(
true,
new Object_(new Fqsen('\\phpDocumentor\\T')),
new Integer(),
new Static_(),
new Array_(new Static_())
),
],
];
}
}
|