public function testServiceAliasDefinition()
 {
     $definition = new ServiceDefinition('service_name', ['service' => __CLASS__]);
     assertTrue($definition->isAlias());
     assertFalse($definition->isFactory());
     assertSame(__CLASS__, $definition->getClass());
 }
 /**
  * @param ServiceDefinition $definition
  *
  * @return Closure
  */
 private function createFactory(ServiceDefinition $definition)
 {
     if ($definition->isFactory()) {
         return $this->applyInflectors($this->createFactoryFactory($definition));
     }
     if ($definition->isAlias()) {
         return $this->createAliasFactory($definition);
     }
     return $this->applyInflectors($this->createInstanceFactory($definition));
 }
 /**
  * @param ServiceDefinition $definition
  *
  * @throws NotClassDefinitionException
  *
  * @return void
  */
 private function registerService(ServiceDefinition $definition)
 {
     if ($definition->isFactory()) {
         $this->getContainer()->add($definition->getName(), $this->createFactoryFactory($definition), $definition->isSingleton());
         return;
     }
     if ($definition->isAlias()) {
         $this->getContainer()->add($definition->getName(), $this->createAliasFactory($definition));
         return;
     }
     $service = $this->getContainer()->add($definition->getName(), $definition->getClass(), $definition->isSingleton());
     if (!$service instanceof ClassDefinition) {
         throw NotClassDefinitionException::fromServiceName($definition->getName());
     }
     $service->withArguments($this->injectContainer($definition->getArguments()));
     $this->addMethodCalls($service, $definition);
 }