Failed Conditions
Push — master ( 4014a4...c8c212 )
by Grégoire
03:02 queued 11s
created

testGetReflectionClass()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Doctrine\Tests\Persistence\Mapping;
6
7
use Doctrine\Common\Reflection\RuntimePublicReflectionProperty;
8
use Doctrine\Persistence\Mapping\MappingException;
9
use Doctrine\Persistence\Mapping\RuntimeReflectionService;
10
use PHPUnit\Framework\TestCase;
11
use ReflectionProperty;
12
use function count;
13
14
/**
15
 * @group DCOM-93
16
 */
17
class RuntimeReflectionServiceTest extends TestCase
18
{
19
    /** @var RuntimeReflectionService */
20
    private $reflectionService;
21
22
    /** @var mixed */
23
    public $unusedPublicProperty;
24
25
    protected function setUp() : void
26
    {
27
        $this->reflectionService = new RuntimeReflectionService();
28
    }
29
30
    public function testShortname() : void
31
    {
32
        self::assertSame('RuntimeReflectionServiceTest', $this->reflectionService->getClassShortName(self::class));
33
    }
34
35
    public function testClassNamespaceName() : void
36
    {
37
        self::assertSame('Doctrine\Tests\Persistence\Mapping', $this->reflectionService->getClassNamespace(self::class));
38
    }
39
40
    public function testGetParentClasses() : void
41
    {
42
        $classes = $this->reflectionService->getParentClasses(self::class);
43
        self::assertTrue(count($classes) >= 1, 'The test class ' . self::class . ' should have at least one parent.');
44
    }
45
46
    public function testGetParentClassesForAbsentClass() : void
47
    {
48
        $this->expectException(MappingException::class);
49
        $this->reflectionService->getParentClasses(__NAMESPACE__ . '\AbsentClass');
50
    }
51
52
    public function testGetMethods() : void
53
    {
54
        self::assertTrue($this->reflectionService->hasPublicMethod(self::class, 'testGetMethods'));
55
        self::assertFalse($this->reflectionService->hasPublicMethod(self::class, 'testGetMethods2'));
56
    }
57
58
    public function testGetAccessibleProperty() : void
59
    {
60
        $reflProp = $this->reflectionService->getAccessibleProperty(self::class, 'reflectionService');
61
        self::assertInstanceOf(ReflectionProperty::class, $reflProp);
62
        self::assertInstanceOf(RuntimeReflectionService::class, $reflProp->getValue($this));
63
64
        $reflProp = $this->reflectionService->getAccessibleProperty(self::class, 'unusedPublicProperty');
65
        self::assertInstanceOf(RuntimePublicReflectionProperty::class, $reflProp);
66
    }
67
}
68