[ 'controller', ], 'expected' => [ 'route' => 'controller', 'params' => [ ], ], ], [ 'params' => [ 'controller/route', 'param1', '-12345', '--option1', '--option2=testValue', '--option-3=testValue', '--option_4=testValue', '-alias1', '-alias2=testValue', '-alias-3=testValue', '-alias_4=testValue', ], 'expected' => [ 'route' => 'controller/route', 'params' => [ 'param1', '-12345', 'option1' => true, 'option2' => 'testValue', 'option-3' => 'testValue', 'option_4' => 'testValue', '_aliases' => [ 'alias1' => true, 'alias2' => 'testValue', 'alias-3' => 'testValue', 'alias_4' => 'testValue', ], ], ], ], [ // Case: Special argument "End of Options" used 'params' => [ 'controller/route', 'param1', '-12345', '--option1', '--option2=testValue', '-alias1', '-alias2=testValue', '--', // Special argument "End of Options" 'param2', '-54321', '--option3', '--', // Second `--` argument shouldn't be treated as special '--option4=testValue', '-alias3', '-alias4=testValue', ], 'expected' => [ 'route' => 'controller/route', 'params' => [ 'param1', '-12345', 'option1' => '1', 'option2' => 'testValue', '_aliases' => [ 'alias1' => true, 'alias2' => 'testValue', ], 'param2', '-54321', '--option3', '--', '--option4=testValue', '-alias3', '-alias4=testValue', ], ], ], [ // Case: Special argument "End of Options" placed before route 'params' => [ '--', // Special argument "End of Options" 'controller/route', 'param1', '-12345', '--option1', '--option2=testValue', '-alias1', '-alias2=testValue', ], 'expected' => [ 'route' => 'controller/route', 'params' => [ 'param1', '-12345', '--option1', '--option2=testValue', '-alias1', '-alias2=testValue', ], ], ], // Case: `--