public function testSetDefaults()
{
$route = $this->getRouteFixture();
$defaults = $route->getDefaults();
$this->assertInternalType('array', $defaults);
$defaults['foo'] = 'bar';
$route->setDefaults($defaults);
$this->assertArrayHasKey('foo', $route->getDefaults());
$this->assertEquals('bar', $route->getDefaults()['foo']);
$route->setDefaults(['controller' => function () {
}]);
$this->assertEmpty($route->getDefaults()['methods']);
//callable controller
$route->setDefaults('strrev');
$this->assertEquals('strrev', $route->getDefaults()['controller']);
//restore previous state
$route->setDefaults($defaults);
//Methods should not be overridden here
$route->addDefaults('strrev');
$this->assertEquals('strrev', $route->getDefaults()['controller']);
$this->assertTrue($route->hasMethod(Request::METHOD_GET));
}