@@ -216,6 +216,30 @@ public function testIgnoresObjectsInSignature()
216216 TestServiceWithStaticProperty::$ initializedObject = new TestServiceWithStaticProperty ();
217217 $ this ->assertTrue ($ res ->isFresh (0 ));
218218 }
219+
220+ public function testEnum ()
221+ {
222+ $ res = new ReflectionClassResource ($ enum = new \ReflectionClass (SomeEnum::class));
223+ $ r = new \ReflectionClass (ReflectionClassResource::class);
224+ $ generateSignature = $ r ->getMethod ('generateSignature ' )->getClosure ($ res );
225+ $ actual = implode ("\n" , iterator_to_array ($ generateSignature ($ enum )));
226+ $ this ->assertStringContainsString ('UnitEnum ' , $ actual );
227+ $ this ->assertStringContainsString ('TestAttribute ' , $ actual );
228+ $ this ->assertStringContainsString ('Beta ' , $ actual );
229+ }
230+
231+ public function testBackedEnum ()
232+ {
233+ $ res = new ReflectionClassResource ($ enum = new \ReflectionClass (SomeBackedEnum::class));
234+ $ r = new \ReflectionClass (ReflectionClassResource::class);
235+ $ generateSignature = $ r ->getMethod ('generateSignature ' )->getClosure ($ res );
236+ $ actual = implode ("\n" , iterator_to_array ($ generateSignature ($ enum )));
237+ $ this ->assertStringContainsString ('UnitEnum ' , $ actual );
238+ $ this ->assertStringContainsString ('BackedEnum ' , $ actual );
239+ $ this ->assertStringContainsString ('TestAttribute ' , $ actual );
240+ $ this ->assertStringContainsString ('Beta ' , $ actual );
241+ $ this ->assertStringContainsString ('beta ' , $ actual );
242+ }
219243}
220244
221245interface DummyInterface
@@ -262,3 +286,19 @@ class TestServiceWithStaticProperty
262286{
263287 public static object $ initializedObject ;
264288}
289+
290+ enum SomeEnum
291+ {
292+ case Alpha;
293+
294+ #[TestAttribute]
295+ case Beta;
296+ }
297+
298+ enum SomeBackedEnum: string
299+ {
300+ case Alpha = 'alpha ' ;
301+
302+ #[TestAttribute]
303+ case Beta = 'beta ' ;
304+ }
0 commit comments