public function testRouteParsingWithOptionalParamsAndType()
{
$route = new Route(array('template' => '/{:controller}/{:action}/{:id}.{:type}', 'params' => array('id' => null)));
$request = new Request();
$default = array('controller' => 'posts');
$request->url = '/posts/view/5.xml';
$result = $route->parse($request);
$expected = array('action' => 'view', 'id' => '5', 'type' => 'xml') + $default;
$this->assertEqual($expected, $result->params);
$request->url = '/posts/index.xml';
$result = $route->parse($request);
$expected = array('action' => 'index', 'id' => '', 'type' => 'xml') + $default;
$this->assertEqual($expected, $result->params);
$request->url = '/posts.xml';
$result = $route->parse($request);
$expected = array('action' => 'index', 'id' => '', 'type' => 'xml') + $default;
$this->assertEqual($expected, $result->params);
}