/**
  * @test
  * @author Robert Lemke <*****@*****.**>
  */
 public function shutdownCallsTheShutdownMethodsOfAllObjectsInTheSingletonObjectsRegistry()
 {
     $className = 'SomeClass' . uniqid();
     $mockObject1 = $this->getMock($className, array('shutdownObject'));
     $mockObject1->expects($this->once())->method('shutdownObject');
     $mockObject2 = $this->getMock($className, array('prepareForSelfDestruction'));
     $mockObject2->expects($this->once())->method('prepareForSelfDestruction');
     $shutdownObjects = array(spl_object_hash($mockObject1) => array($mockObject1, 'shutdownObject'), spl_object_hash($mockObject2) => array($mockObject2, 'prepareForSelfDestruction'));
     $objectManager = new \F3\FLOW3\Object\ObjectManager();
     $objectManager->injectObjectBuilder($this->getMock('F3\\FLOW3\\Object\\ObjectBuilder'));
     $objectManager->injectObjectFactory($this->getMock('F3\\FLOW3\\Object\\ObjectFactoryInterface'));
     $objectManager->injectSingletonObjectsRegistry($this->getMock('F3\\FLOW3\\Object\\TransientRegistry'));
     $objectManager->injectReflectionService($this->getMock('F3\\FLOW3\\Reflection\\ReflectionService'));
     $shutdownObjectsReflection = new \ReflectionProperty($objectManager, 'shutdownObjects');
     $shutdownObjectsReflection->setAccessible(TRUE);
     $shutdownObjectsReflection->setValue($objectManager, $shutdownObjects);
     $objectManager->shutdown();
 }