File tree 2 files changed +28
-1
lines changed
Filter options
src/Symfony/Component/Uid
2 files changed +28
-1
lines changed
Original file line number Diff line number Diff line change @@ -170,6 +170,25 @@ public function testIsValid()
170
170
$ this ->assertTrue (UuidV4::isValid (self ::A_UUID_V4 ));
171
171
}
172
172
173
+ public function testIsValidWithNilUuid ()
174
+ {
175
+ $ this ->assertTrue (Uuid::isValid ('00000000-0000-0000-0000-000000000000 ' ));
176
+ $ this ->assertTrue (NilUuid::isValid ('00000000-0000-0000-0000-000000000000 ' ));
177
+
178
+ $ this ->assertFalse (UuidV1::isValid ('00000000-0000-0000-0000-000000000000 ' ));
179
+ $ this ->assertFalse (UuidV4::isValid ('00000000-0000-0000-0000-000000000000 ' ));
180
+ }
181
+
182
+ public function testIsValidWithMaxUuid ()
183
+ {
184
+ $ this ->assertTrue (Uuid::isValid ('ffffffff-ffff-ffff-ffff-ffffffffffff ' ));
185
+ $ this ->assertTrue (Uuid::isValid ('FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF ' ));
186
+ $ this ->assertTrue (Uuid::isValid ('fFFFFFFF-ffff-FFFF-FFFF-FFFFffFFFFFF ' ));
187
+
188
+ $ this ->assertFalse (UuidV5::isValid ('ffffffff-ffff-ffff-ffff-ffffffffffff ' ));
189
+ $ this ->assertFalse (UuidV6::isValid ('ffffffff-ffff-ffff-ffff-ffffffffffff ' ));
190
+ }
191
+
173
192
public function testEquals ()
174
193
{
175
194
$ uuid1 = new UuidV1 (self ::A_UUID_V1 );
Original file line number Diff line number Diff line change @@ -58,7 +58,7 @@ public static function fromString(string $uuid): parent
58
58
$ uuid = substr_replace ($ uuid , '- ' , 18 , 0 );
59
59
$ uuid = substr_replace ($ uuid , '- ' , 23 , 0 );
60
60
} elseif (26 === \strlen ($ uuid ) && Ulid::isValid ($ uuid )) {
61
- $ ulid = new Ulid ( ' 00000000000000000000000000 ' );
61
+ $ ulid = new NilUlid ( );
62
62
$ ulid ->uid = strtoupper ($ uuid );
63
63
$ uuid = $ ulid ->toRfc4122 ();
64
64
}
@@ -117,6 +117,14 @@ final public static function v6(): UuidV6
117
117
118
118
public static function isValid (string $ uuid ): bool
119
119
{
120
+ if (self ::NIL === $ uuid && \in_array (static ::class, [__CLASS__ , NilUuid::class], true )) {
121
+ return true ;
122
+ }
123
+
124
+ if (__CLASS__ === static ::class && 'ffffffff-ffff-ffff-ffff-ffffffffffff ' === strtr ($ uuid , 'F ' , 'f ' )) {
125
+ return true ;
126
+ }
127
+
120
128
if (!preg_match ('{^[0-9a-f]{8}(?:-[0-9a-f]{4}){2}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$}Di ' , $ uuid )) {
121
129
return false ;
122
130
}
You can’t perform that action at this time.
0 commit comments