summaryrefslogtreecommitdiff
path: root/ext/reflection/tests/ReflectionEnum_getCase.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/reflection/tests/ReflectionEnum_getCase.phpt')
-rw-r--r--ext/reflection/tests/ReflectionEnum_getCase.phpt50
1 files changed, 50 insertions, 0 deletions
diff --git a/ext/reflection/tests/ReflectionEnum_getCase.phpt b/ext/reflection/tests/ReflectionEnum_getCase.phpt
new file mode 100644
index 0000000000..f2b53cf657
--- /dev/null
+++ b/ext/reflection/tests/ReflectionEnum_getCase.phpt
@@ -0,0 +1,50 @@
+--TEST--
+ReflectionEnum::getCases()
+--FILE--
+<?php
+
+enum Enum_ {
+ case Foo;
+ const Bar = self::Foo;
+}
+
+enum IntEnum: int {
+ case Foo = 0;
+ const Bar = self::Foo;
+}
+
+function test(string $enumName, string $caseName) {
+ try {
+ $reflectionEnum = new ReflectionEnum($enumName);
+ var_dump($reflectionEnum->getCase($caseName));
+ } catch (Throwable $e) {
+ echo get_class($e) . ': ' . $e->getMessage() . "\n";
+ }
+}
+
+test(Enum_::class, 'Foo');
+test(Enum_::class, 'Bar');
+test(Enum_::class, 'Baz');
+
+test(IntEnum::class, 'Foo');
+test(IntEnum::class, 'Bar');
+test(IntEnum::class, 'Baz');
+
+?>
+--EXPECT--
+object(ReflectionEnumUnitCase)#2 (2) {
+ ["name"]=>
+ string(3) "Foo"
+ ["class"]=>
+ string(5) "Enum_"
+}
+ReflectionException: Enum_::Bar is not a case
+ReflectionException: Case Enum_::Baz does not exist
+object(ReflectionEnumBackedCase)#2 (2) {
+ ["name"]=>
+ string(3) "Foo"
+ ["class"]=>
+ string(7) "IntEnum"
+}
+ReflectionException: IntEnum::Bar is not a case
+ReflectionException: Case IntEnum::Baz does not exist