3 declare(strict_types = 1);
22 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
29 'default route only' => [
41 'static, default route' => [
54 'mandatory, static, default route' => [
69 'ambiguous routes, no parameters, most probable' => [
73 $this->
createRoute(
'/list/{uid}/{category}', [
'category' => 0]),
75 $this->
createRoute(
'/list/{category}', [
'category' => 0]),
82 '/list/{uid}/{category}',
86 'mandatory first, ambiguous parameters' => [
90 $this->
createRoute(
'/list/{uid}/{category}', [
'category' => 0]),
92 $this->
createRoute(
'/list/{category}', [
'category' => 0]),
101 '/list/{uid}/{category}',
106 'complete first, ambiguous parameters #1' => [
110 $this->
createRoute(
'/list/{uid}/{category}', [
'category' => 0]),
112 $this->
createRoute(
'/list/{category}', [
'category' => 0]),
122 '/list/{uid}/{category}',
126 'complete first, ambiguous parameters #2' => [
130 $this->
createRoute(
'/list/{uid}/{category}', [
'category' => 0]),
132 $this->
createRoute(
'/list/{category}', [
'category' => 0]),
140 '/list/{uid}/{category}',
148 'defaults only, no parameters given #1' => [
150 $this->
createRoute(
'/list/{defA}/{defB}/{defC}', [
'defA' => 0,
'defB' => 0,
'defC' => 0]),
151 $this->
createRoute(
'/list/{defD}/{defE}/{defF}', [
'defD' => 0,
'defE' => 0,
'defF' => 0]),
156 '/list/{defA}/{defB}/{defC}',
157 '/list/{defD}/{defE}/{defF}',
161 'defaults only, no parameters given #2' => [
163 $this->
createRoute(
'/list/{defD}/{defE}/{defF}', [
'defD' => 0,
'defE' => 0,
'defF' => 0]),
164 $this->
createRoute(
'/list/{defA}/{defB}/{defC}', [
'defA' => 0,
'defB' => 0,
'defC' => 0]),
169 '/list/{defD}/{defE}/{defF}',
170 '/list/{defA}/{defB}/{defC}',
173 'defaults only, {defF} given, best match' => [
175 $this->
createRoute(
'/list/{defA}/{defB}/{defC}', [
'defA' => 0,
'defB' => 0,
'defC' => 0]),
176 $this->
createRoute(
'/list/{defD}/{defE}/{defF}', [
'defD' => 0,
'defE' => 0,
'defF' => 0]),
182 '/list/{defD}/{defE}/{defF}',
183 '/list/{defA}/{defB}/{defC}',
186 'mixed variables, ambiguous parameters, complete mandatory first #1' => [
188 $this->
createRoute(
'/list/{d}/{e}/{defF}', [
'defF' => 0]),
189 $this->
createRoute(
'/list/{a}/{defB}/{defC}', [
'defB' => 0,
'defC' => 0]),
197 '/list/{a}/{defB}/{defC}',
198 '/list/{d}/{e}/{defF}',
201 'mixed variables, ambiguous parameters, complete mandatory first #2' => [
203 $this->
createRoute(
'/list/{a}/{defB}/{defC}', [
'defB' => 0,
'defC' => 0]),
204 $this->
createRoute(
'/list/{d}/{e}/{defF}', [
'defF' => 0]),
213 '/list/{d}/{e}/{defF}',
214 '/list/{a}/{defB}/{defC}',
217 'mixed variables, ambiguous parameters, complete first' => [
219 $this->
createRoute(
'/list/{d}/{e}/{defF}', [
'defF' => 0]),
220 $this->
createRoute(
'/list/{a}/{defB}/{defC}', [
'defB' => 0,
'defC' => 0]),
230 '/list/{a}/{defB}/{defC}',
231 '/list/{d}/{e}/{defF}',
248 ->withRoutes($givenRoutes)
249 ->withOriginalParameters($givenParameters);
250 $routes = $sorter->sortRoutesForGeneration()->getRoutes();
251 $routePaths = array_map([$this,
'getRoutePath'], array_values($routes));
252 self::assertSame($expectation, $routePaths);
257 return $route->getPath();
262 $route =
new Route($path);
263 $route->setDefaults($defaults);
269 $route =
new Route($path);
270 $route->setOption(
'_isDefault',
true);