79 lines
3.2 KiB
PHP
79 lines
3.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace StubTests;
|
|
|
|
use RuntimeException;
|
|
use StubTests\TestData\Providers\PhpStormStubsSingleton;
|
|
|
|
/**
|
|
* Class to test typehints of some Reflection* classes as reflection for these classes returns null.
|
|
*/
|
|
class StubsReflectionClassesTest extends AbstractBaseStubsTestCase
|
|
{
|
|
/**
|
|
* @throws RuntimeException
|
|
*/
|
|
public function testReflectionFunctionAbstractGetReturnTypeMethod()
|
|
{
|
|
$getReturnTypeMethod = PhpStormStubsSingleton::getPhpStormStubs()->getClass('ReflectionFunctionAbstract')->getMethod('getReturnType');
|
|
$allReturnTypes = array_unique(Model\CommonUtils::flattenArray($getReturnTypeMethod->returnTypesFromAttribute +
|
|
$getReturnTypeMethod->returnTypesFromSignature + $getReturnTypeMethod->returnTypesFromPhpDoc, false));
|
|
self::assertContains(
|
|
'ReflectionNamedType',
|
|
$allReturnTypes,
|
|
'method ReflectionFunctionAbstract::getReturnType should have ReflectionNamedType in return types for php 7.1+'
|
|
);
|
|
self::assertContains(
|
|
'ReflectionUnionType',
|
|
$allReturnTypes,
|
|
'method ReflectionFunctionAbstract::getReturnType should have ReflectionUnionType in return types for php 8.0+'
|
|
);
|
|
self::assertContains(
|
|
'ReflectionType',
|
|
$allReturnTypes,
|
|
'method ReflectionFunctionAbstract::getReturnType should have ReflectionType in return types for php 7.0'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @throws RuntimeException
|
|
*/
|
|
public function testReflectionPropertyGetTypeMethod()
|
|
{
|
|
$getTypeMethod = PhpStormStubsSingleton::getPhpStormStubs()->getClass('ReflectionProperty')->getMethod('getType');
|
|
$allReturnTypes = array_unique(Model\CommonUtils::flattenArray($getTypeMethod->returnTypesFromAttribute +
|
|
$getTypeMethod->returnTypesFromSignature + $getTypeMethod->returnTypesFromPhpDoc, false));
|
|
self::assertContains(
|
|
'ReflectionNamedType',
|
|
$allReturnTypes,
|
|
'method ReflectionProperty::getType should have ReflectionNamedType in return types for php 7.1+'
|
|
);
|
|
self::assertContains(
|
|
'ReflectionUnionType',
|
|
$allReturnTypes,
|
|
'method ReflectionProperty::getType should have ReflectionUnionType in return types for php 8.0+'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @throws RuntimeException
|
|
*/
|
|
public function testReflectionParameterGetTypeMethod()
|
|
{
|
|
$getTypeMethod = PhpStormStubsSingleton::getPhpStormStubs()->getClass('ReflectionParameter')->getMethod('getType');
|
|
$allReturnTypes = array_unique(Model\CommonUtils::flattenArray($getTypeMethod->returnTypesFromAttribute +
|
|
$getTypeMethod->returnTypesFromSignature + $getTypeMethod->returnTypesFromPhpDoc, false));
|
|
self::assertContains(
|
|
'ReflectionNamedType',
|
|
$allReturnTypes,
|
|
'method ReflectionParameter::getType should have ReflectionNamedType in return types'
|
|
);
|
|
self::assertContains(
|
|
'ReflectionUnionType',
|
|
$allReturnTypes,
|
|
'method ReflectionParameter::getType should have ReflectionUnionType in return types'
|
|
);
|
|
}
|
|
}
|