Skip to content

Commit 8f9f18a

Browse files
committed
Add test for EnumMethodReflection properties
1 parent b2083c4 commit 8f9f18a

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

tests/Reflection/EnumMethodsClassReflectionExtensionTest.php

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
declare(strict_types=1);
44

5+
use PHPStan\Reflection\ParametersAcceptorSelector;
56
use PHPStan\Testing\TestCase;
7+
use PHPStan\Type\VerbosityLevel;
68
use Timeweb\PHPStan\Reflection\EnumMethodReflection;
79
use Timeweb\PHPStan\Reflection\EnumMethodsClassReflectionExtension;
810

@@ -69,4 +71,38 @@ public function testEnumMethodReflectionCanBeObtained()
6971

7072
$this->assertInstanceOf(EnumMethodReflection::class, $methodReflection);
7173
}
74+
75+
/**
76+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::getName
77+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::getDeclaringClass
78+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::isStatic
79+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::isPrivate
80+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::isPublic
81+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::getPrototype
82+
* @covers \Timeweb\PHPStan\Reflection\EnumMethodReflection::getVariants
83+
* @uses Timeweb\PHPStan\Reflection\EnumMethodReflection
84+
* @dataProvider enumFixtureProperties
85+
*/
86+
public function testEnumMethodProperties(string $propertyName)
87+
{
88+
$classReflection = $this->broker->getClass(EnumFixture::class);
89+
$methodReflection = $this->reflectionExtension->getMethod($classReflection, $propertyName);
90+
$parametersAcceptor = ParametersAcceptorSelector::selectSingle($methodReflection->getVariants());
91+
92+
$this->assertSame($propertyName, $methodReflection->getName());
93+
$this->assertSame($classReflection, $methodReflection->getDeclaringClass());
94+
$this->assertTrue($methodReflection->isStatic());
95+
$this->assertFalse($methodReflection->isPrivate());
96+
$this->assertTrue($methodReflection->isPublic());
97+
$this->assertSame(EnumFixture::class, $parametersAcceptor->getReturnType()->describe(VerbosityLevel::value()));
98+
}
99+
100+
public function enumFixtureProperties(): array
101+
{
102+
return [
103+
['MEMBER'],
104+
['PUBLIC_CONST'],
105+
['PRIVATE_CONST'],
106+
];
107+
}
72108
}

tests/_fixture/EnumFixture.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
class EnumFixture extends MyCLabs\Enum\Enum
44
{
55
const MEMBER = 'member';
6+
7+
public const PUBLIC_CONST = 'public';
8+
private const PRIVATE_CONST = 'private';
69
}

0 commit comments

Comments
 (0)