/**
  * @param  Controller $controller
  * @param  bool       $stopPropagation
  * @return $this
  */
 public function setController(Controller $controller, $stopPropagation = false)
 {
     if (!$stopPropagation) {
         $controller->addMethod($this, true);
     }
     $this->controller = $controller;
     return $this;
 }
 public function testScenario4()
 {
     $namespace = 'Saxulum\\SaxulumControllerProvider\\Controller\\TestController';
     $serviceId = 'saxulum.saxulumcontrollerprovider.controller.testcontroller';
     $injectionKeys = array('twig');
     $methodArray = array('name' => 'setDoctrine', 'injectionKeys' => array('doctrine'));
     $method = $this->getMock('Saxulum\\SaxulumControllerProvider\\Map\\Method');
     $method->expects($this->any())->method('__toArray')->will($this->returnValue($methodArray));
     $controller = new Controller();
     $controller->setNamespace($namespace);
     $controller->setServiceId($serviceId);
     $controller->setInjectionKeys($injectionKeys);
     $controller->addMethod($method);
     $this->assertEquals($namespace, $controller->getNamespace());
     $this->assertEquals($serviceId, $controller->getServiceId());
     $this->assertEquals($injectionKeys, $controller->getInjectionKeys());
     $this->assertTrue($controller->hasInjectionKeys());
     $this->assertFalse($controller->isInjectContainer());
     $this->assertTrue($controller->hasMethods());
     $newController = new Controller($controller->__toArray());
     $this->assertEquals($controller->__toArray(), $newController->__toArray());
 }