public function testRouteParsingWithOptionalParam() {
$route = new Route(array('template' => '/{:controller}/{:action}'));
$request = new Request();
$default = array('action' => 'index');
$request->url = '/posts';
$result = $route->parse($request);
$this->assertEqual(array('controller' => 'posts') + $default, $result->params);
$request->url = '/users';
$result = $route->parse($request);
$this->assertEqual(array('controller' => 'users') + $default, $result->params);
$request->url = '/1';
$result = $route->parse($request);
$this->assertEqual(array('controller' => '1') + $default, $result->params);
$request->url = '/users/index';
$result = $route->parse($request);
$this->assertEqual(array('controller' => 'users') + $default, $result->params);
$request->url = '/users/view';
$result = $route->parse($request);
$expected = array('controller' => 'users', 'action' => 'view');
$this->assertEqual($expected, $result->params);
$request->url = '/users/view/5';
$this->assertFalse($route->parse($request));
$request->url = '/';
$this->assertFalse($route->parse($request));
}