Skip to content

Commit 048f4e3

Browse files
committed
wip
1 parent f1a1f0e commit 048f4e3

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace Tempest\Reflection\Tests\Fixtures;
4+
5+
enum TestBackedEnum: string
6+
{
7+
}

packages/reflection/tests/Fixtures/TestClassA.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,8 @@
66

77
final class TestClassA
88
{
9+
public function method(TestEnum $enum, TestBackedEnum $backedEnum, string $other)
10+
{
11+
12+
}
913
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace Tempest\Reflection\Tests;
4+
5+
use PHPUnit\Framework\TestCase;
6+
use Tempest\Reflection\ClassReflector;
7+
use Tempest\Reflection\ParameterReflector;
8+
use Tempest\Reflection\Tests\Fixtures\TestClassA;
9+
10+
final class MethodReflectorTest extends TestCase
11+
{
12+
public function test_get_parameter_by_name(): void
13+
{
14+
$this->assertInstanceOf(
15+
ParameterReflector::class,
16+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('enum'),
17+
);
18+
19+
$this->assertNull(
20+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('unknown'),
21+
);
22+
}
23+
}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
namespace Tempest\Reflection\Tests;
4+
5+
use PHPUnit\Framework\TestCase;
6+
use Tempest\Reflection\ClassReflector;
7+
use Tempest\Reflection\ParameterReflector;
8+
use Tempest\Reflection\Tests\Fixtures\TestClassA;
9+
10+
final class TypeReflectorTest extends TestCase
11+
{
12+
public function test_is_enum(): void
13+
{
14+
$this->assertTrue(
15+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('enum')->getType()->isEnum(),
16+
);
17+
18+
$this->assertTrue(
19+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('backedEnum')->getType()->isEnum(),
20+
);
21+
22+
$this->assertTrue(
23+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('backedEnum')->getType()->isBackedEnum(),
24+
);
25+
26+
$this->assertTrue(
27+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('backedEnum')->getType()->isEnum(),
28+
);
29+
30+
$this->assertTrue(
31+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('backedEnum')->getType()->isUnitEnum(),
32+
);
33+
34+
$this->assertTrue(
35+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('enum')->getType()->isUnitEnum(),
36+
);
37+
38+
$this->assertFalse(
39+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('enum')->getType()->isBackedEnum(),
40+
);
41+
42+
$this->assertFalse(
43+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('other')->getType()->isBackedEnum(),
44+
);
45+
46+
$this->assertFalse(
47+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('other')->getType()->isEnum(),
48+
);
49+
50+
$this->assertFalse(
51+
new ClassReflector(TestClassA::class)->getMethod('method')->getParameter('other')->getType()->isUnitEnum(),
52+
);
53+
}
54+
}

0 commit comments

Comments
 (0)