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 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
<?php
namespace Doctrine\Tests\Common\Util
{
use Doctrine\Common\Util\ClassUtils;
use Doctrine\Tests\DoctrineTestCase;
use PHPUnit\Framework\Attributes\DataProvider;
class ClassUtilsTest extends DoctrineTestCase
{
/**
* @psalm-return list<array{class-string, class-string}>
*/
public static function dataGetClass()
{
return [
[\stdClass::class, \stdClass::class],
[ClassUtils::class, ClassUtils::class],
[ 'MyProject\Proxies\__CG__\stdClass', \stdClass::class],
[ 'MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__\stdClass', \stdClass::class],
[ 'MyProject\Proxies\__CG__\Doctrine\Tests\Common\Util\ChildObject', ChildObject::class],
];
}
#[DataProvider('dataGetClass')]
public function testGetRealClass(string $className, string $expectedClassName): void
{
self::assertEquals($expectedClassName, ClassUtils::getRealClass($className));
}
#[DataProvider('dataGetClass')]
public function testGetClass(string $className, string $expectedClassName): void
{
$object = new $className();
self::assertEquals($expectedClassName, ClassUtils::getClass($object));
}
public function testGetParentClass(): void
{
$parentClass = ClassUtils::getParentClass('MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__\Doctrine\Tests\Common\Util\ChildObject');
self::assertEquals('stdClass', $parentClass);
}
public function testGenerateProxyClassName(): void
{
self::assertEquals('Proxies\__CG__\stdClass', ClassUtils::generateProxyClassName('stdClass', 'Proxies'));
}
#[DataProvider('dataGetClass')]
public function testNewReflectionClass(string $className, string $expectedClassName): void
{
$reflClass = ClassUtils::newReflectionClass($className);
self::assertEquals($expectedClassName, $reflClass->getName());
}
#[DataProvider('dataGetClass')]
public function testNewReflectionObject(string $className, string $expectedClassName): void
{
$object = new $className();
$reflClass = ClassUtils::newReflectionObject($object);
self::assertEquals($expectedClassName, $reflClass->getName());
}
}
class ChildObject extends \stdClass
{
}
}
namespace MyProject\Proxies\__CG__
{
class stdClass extends \stdClass
{
}
}
namespace MyProject\Proxies\__CG__\Doctrine\Tests\Common\Util
{
class ChildObject extends \Doctrine\Tests\Common\Util\ChildObject
{
}
}
namespace MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__
{
class stdClass extends \MyProject\Proxies\__CG__\stdClass
{
}
}
namespace MyProject\Proxies\__CG__\OtherProject\Proxies\__CG__\Doctrine\Tests\Common\Util
{
class ChildObject extends \MyProject\Proxies\__CG__\Doctrine\Tests\Common\Util\ChildObject
{
}
}
|