@@ -226,37 +226,48 @@ public function testSerialize()
226
226
$ this ->assertNotSame ($ route , $ unserialized );
227
227
}
228
228
229
- public function testInlineDefaultAndRequirement ()
229
+ /**
230
+ * @dataProvider provideInlineDefaultAndRequirementCases
231
+ */
232
+ public function testInlineDefaultAndRequirement (Route $ route , string $ expectedPath , string $ expectedHost , array $ expectedDefaults , array $ expectedRequirements )
233
+ {
234
+ self ::assertSame ($ expectedPath , $ route ->getPath ());
235
+ self ::assertSame ($ expectedHost , $ route ->getHost ());
236
+ self ::assertSame ($ expectedDefaults , $ route ->getDefaults ());
237
+ self ::assertSame ($ expectedRequirements , $ route ->getRequirements ());
238
+ }
239
+
240
+ public static function provideInlineDefaultAndRequirementCases (): iterable
230
241
{
231
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( ' bar ' , null ), new Route ( ' /foo/{bar?} ' )) ;
232
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( ' bar ' , ' baz ' ), new Route ( '/foo/{bar?baz} ' )) ;
233
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( ' bar ' , ' baz<buz> ' ), new Route ( '/foo/{bar? baz<buz>} ' )) ;
234
- $ this -> assertEquals (( new Route ('/foo/{!bar} ' ))-> setDefault ( ' bar ' , ' baz<buz> ' ), new Route ( '/foo/{!bar? baz<buz>} ' )) ;
235
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( 'bar ' , 'baz ' ), new Route ( ' /foo/{bar? } ' , ['bar ' => 'baz ' ])) ;
236
-
237
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setRequirement ( ' bar ' , ' .* ' ), new Route ( '/foo/{bar<.*>} ' )) ;
238
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setRequirement ( ' bar ' , ' > ' ), new Route ( '/foo/{bar<>>} ' )) ;
239
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setRequirement ( 'bar ' , '\d+ ' ), new Route ( ' /foo/{bar<.*> } ' , [], ['bar ' => '\d+ ' ])) ;
240
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setRequirement ( ' bar ' , ' [a-z]{2} ' ), new Route ( ' /foo/{bar<[ a-z]{2}>} ' )) ;
241
- $ this -> assertEquals (( new Route ('/foo/{!bar} ' ))-> setRequirement ( ' bar ' , ' \d+ ' ), new Route ( '/foo/{!bar< \d+>} ' )) ;
242
-
243
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( ' bar ' , null )-> setRequirement ( ' bar ' , '.* ' ), new Route ( ' /foo/{ bar<.*>?} ' )) ;
244
- $ this -> assertEquals (( new Route ('/foo/{bar} ' ))-> setDefault ( ' bar ' , '<> ' )-> setRequirement ( 'bar ' , ' > ' ), new Route ( ' /foo/{ bar<>>?<>} ' )) ;
245
-
246
- $ this -> assertEquals (( new Route ('/{foo}/{!bar} ' ))-> setDefaults ([ ' bar ' => ' <> ' , 'foo ' => '\\' ])-> setRequirements ([ 'bar ' => '\\' , 'foo ' => '. ' ]), new Route ( ' /{foo<.>?\}/{!bar<\>?<>} ' )) ;
247
-
248
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setDefault ( ' bar ' , null ), ( new Route ( '/ ' ))-> setHost ( '{bar?} ' )) ;
249
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setDefault ( ' bar ' , 'baz ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar? baz} ' )) ;
250
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setDefault ( ' bar ' , 'baz<buz> ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar? baz<buz>} ' )) ;
251
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( ' { bar} ' )-> setDefault ( ' bar ' , null ), ( new Route ( ' / ' , ['bar ' => ' baz ' ]))-> setHost ( ' {bar?} ' )) ;
252
-
253
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setRequirement ( ' bar ' , '.* ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar<.*>} ' )) ;
254
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setRequirement ( ' bar ' , '> ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar<>>} ' )) ;
255
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( ' { bar} ' )-> setRequirement ( ' bar ' , ' .* ' ), ( new Route ( '/ ' , [], ['bar ' => '\d+ ' ]))-> setHost ( ' {bar<.*>} ' )) ;
256
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( ' {bar} ' )-> setRequirement ( ' bar ' , ' [a-z]{2} ' ), ( new Route ( '/ ' ))-> setHost ( '{bar<[ a-z]{2}>} ' )) ;
257
-
258
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setDefault ( ' bar ' , null )-> setRequirement ( ' bar ' , ' .* ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar<.*>?} ' )) ;
259
- $ this -> assertEquals (( new Route ('/ ' ))-> setHost ( '{bar} ' )-> setDefault ( ' bar ' , '<> ' )-> setRequirement ( 'bar ' , ' > ' ), ( new Route ( ' / ' ))-> setHost ( ' {bar<>>?<>} ' )) ;
242
+ yield [ new Route ('/foo/{bar?} ' , [], [], [], '' ), ' /foo/{bar} ' , '' , [ ' bar ' => null ], []] ;
243
+ yield [ new Route ('/foo/{bar?baz} ' , [], [], [], ' ' ), '/foo/{bar} ' , '' , [ ' bar ' => ' baz ' ], []] ;
244
+ yield [ new Route ('/foo/{bar?baz<buz>} ' , [], [], [], ' ' ), '/foo/{bar} ' , '' , [ ' bar ' => ' baz<buz> ' ], []] ;
245
+ yield [ new Route ('/foo/{!bar?baz<buz>} ' , [], [], [], ' ' ), '/foo/{!bar} ' , '' , [ ' bar ' => ' baz<buz> ' ], []] ;
246
+ yield [ new Route ('/foo/{bar?} ' , [ 'bar ' => 'baz ' ], [], [], '' ), ' /foo/{bar} ' , '' , ['bar ' => 'baz ' ], []] ;
247
+
248
+ yield [ new Route ('/foo/{bar<.*>} ' , [], [], [], ' ' ), '/foo/{bar} ' , '' , [], [ ' bar ' => ' .* ' ]] ;
249
+ yield [ new Route ('/foo/{bar<>>} ' , [], [], [], ' ' ), '/foo/{bar} ' , '' , [], [ ' bar ' => ' > ' ]] ;
250
+ yield [ new Route ('/foo/{bar<.*>} ' , [], [ 'bar ' => '\d+ ' ], [], '' ), ' /foo/{bar} ' , '' , [], ['bar ' => '\d+ ' ]] ;
251
+ yield [ new Route ('/foo/{bar< [a-z]{2}>} ' , [], [], [], '' ), ' /foo/{bar} ' , '' , [], [ ' bar ' => ' [ a-z]{2}' ]] ;
252
+ yield [ new Route ('/foo/{!bar<\d+>} ' , [], [], [], ' ' ), '/foo/{!bar} ' , '' , [], [ ' bar ' => ' \d+ ' ]] ;
253
+
254
+ yield [ new Route ('/foo/{bar<.*>?} ' , [], [], [], '' ), ' /foo/{ bar} ' , '' , [ ' bar ' => null ], [ ' bar ' => ' .* ' ]] ;
255
+ yield [ new Route ('/foo/{bar<>>?<>} ' , [], [], [], '' ), ' /foo/{ bar} ' , '' , [ 'bar ' => ' <> ' ], [ ' bar ' => ' > ' ]] ;
256
+
257
+ yield [ new Route ('/{foo<.>?\ }/{!bar<\>?<>} ' , [], [], [], '' ), ' /{foo}/{! bar} ' , ' ' , [ 'foo ' => '\\' , 'bar ' => '<> ' ], [ 'foo ' => '. ' , ' bar ' => '\\' ]] ;
258
+
259
+ yield [ new Route ('/ ' , [], [], [], '{bar? } ' ), '/ ' , '{bar} ' , [ ' bar ' => null ], []] ;
260
+ yield [ new Route ('/ ' , [], [], [], '{bar?baz } ' ), ' / ' , '{bar} ' , [ ' bar ' => ' baz ' ], []] ;
261
+ yield [ new Route ('/ ' , [], [], [], '{bar?baz<buz> } ' ), ' / ' , '{bar} ' , [ ' bar ' => ' baz<buz> ' ], []] ;
262
+ yield [ new Route ('/ ' , [ ' bar ' => ' baz ' ], [], [], ' {bar?} ' ), ' / ' , ' {bar} ' , ['bar ' => null ], []] ;
263
+
264
+ yield [ new Route ('/ ' , [], [], [], '{bar<.*> } ' ), ' / ' , '{bar} ' , [], [ ' bar ' => ' .* ' ]] ;
265
+ yield [ new Route ('/ ' , [], [], [], '{bar<>> } ' ), ' / ' , '{bar} ' , [], [ ' bar ' => ' > ' ]] ;
266
+ yield [ new Route ('/ ' , [], [ ' bar ' => ' \d+ ' ], [], ' {bar<.*>} ' ), '/ ' , ' {bar} ' , [], ['bar ' => '.* ' ]] ;
267
+ yield [ new Route ('/ ' , [], [], [], ' {bar< [a-z]{2}>} ' ), '/ ' , '{bar} ' , [], [ ' bar ' => ' [ a-z]{2}' ]] ;
268
+
269
+ yield [ new Route ('/ ' , [], [], [], '{bar<.*>? } ' ), ' / ' , ' { bar} ' , [ ' bar ' => null ], [ ' bar ' => ' .* ' ]] ;
270
+ yield [ new Route ('/ ' , [], [], [], '{bar<>>?<> } ' ), ' / ' , '{bar} ' , [ 'bar ' => ' <> ' ], [ ' bar ' => ' > ' ]] ;
260
271
}
261
272
262
273
/**
0 commit comments