@@ -116,8 +116,8 @@ public function dataProvider()
116116 ['4126dbc1-488e-4f6e-aadd-775dcbac482e ' , UuidV4::class],
117117 ['18cdf3d3-ea1b-5b23-a9c5-40abd0e2df22 ' , UuidV5::class],
118118 ['1ea6ecef-eb9a-66fe-b62b-957b45f17e43 ' , UuidV6::class],
119- ['1ea6ecef-eb9a-66fe-b62b-957b45f17e43 ' , AbstractUid::class],
120119 ['01E4BYF64YZ97MDV6RH0HAMN6X ' , Ulid::class],
120+ ['01FPT3YXZXJ1J437FES7CR5BCB ' , TestCustomUid::class],
121121 ];
122122 }
123123
@@ -134,16 +134,32 @@ public function testSupportsDenormalizationForNonUid()
134134$ this ->assertFalse ($ this ->normalizer ->supportsDenormalization ('foo ' , \stdClass::class));
135135 }
136136
137+ public function testSupportOurAbstractUid ()
138+ {
139+ $ this ->assertTrue ($ this ->normalizer ->supportsDenormalization ('1ea6ecef-eb9a-66fe-b62b-957b45f17e43 ' , AbstractUid::class));
140+ }
141+
142+ public function testSupportCustomAbstractUid ()
143+ {
144+ $ this ->assertTrue ($ this ->normalizer ->supportsDenormalization ('ccc ' , TestAbstractCustomUid::class));
145+ }
146+
137147/**
138148 * @dataProvider dataProvider
139149 */
140150public function testDenormalize ($ uuidString ,$ class )
141151 {
142- if (Ulid::class ===$ class ) {
143- $ this ->assertEquals (new Ulid ($ uuidString ),$ this ->normalizer ->denormalize ($ uuidString ,$ class ));
144- }else {
145- $ this ->assertEquals (Uuid::fromString ($ uuidString ),$ this ->normalizer ->denormalize ($ uuidString ,$ class ));
146- }
152+ $ this ->assertEquals ($ class ::fromString ($ uuidString ),$ this ->normalizer ->denormalize ($ uuidString ,$ class ));
153+ }
154+
155+ public function testDenormalizeOurAbstractUid ()
156+ {
157+ $ this ->assertEquals (Uuid::fromString ($ uuidString ='1ea6ecef-eb9a-66fe-b62b-957b45f17e43 ' ),$ this ->normalizer ->denormalize ($ uuidString , AbstractUid::class));
158+ }
159+
160+ public function testDenormalizeCustomAbstractUid ()
161+ {
162+ $ this ->assertEquals (Uuid::fromString ($ uuidString ='1ea6ecef-eb9a-66fe-b62b-957b45f17e43 ' ),$ this ->normalizer ->denormalize ($ uuidString , TestAbstractCustomUid::class));
147163 }
148164
149165public function testNormalizeWithNormalizationFormatPassedInConstructor ()
@@ -169,3 +185,11 @@ public function testNormalizeWithNormalizationFormatNotValid()
169185 ]);
170186 }
171187}
188+
189+ class TestCustomUidextends Ulid
190+ {
191+ }
192+
193+ abstract class TestAbstractCustomUidextends Ulid
194+ {
195+ }