/**
  * Adds an argument to the dependency definition.
  * @param \Brickoo\Component\IoC\Definition\ArgumentDefinition $argument
  * @throws \Brickoo\Component\IoC\Definition\Container\Exception\DuplicateParameterDefinitionException
  * @return \Brickoo\Component\IoC\Definition\Container\ArgumentDefinitionContainer
  */
 public function addArgument(ArgumentDefinition $argument)
 {
     if (($hasName = $argument->hasName()) && $this->contains($argument->getName())) {
         throw new DuplicateParameterDefinitionException($argument->getName());
     }
     $argumentKey = $hasName ? $argument->getName() : uniqid("arg:");
     $this->add($argumentKey, $argument);
     return $this;
 }
 /**
  * @covers Brickoo\Component\IoC\Definition\ArgumentDefinition::__construct
  * @covers Brickoo\Component\IoC\Definition\ArgumentDefinition::getName
  * @covers Brickoo\Component\IoC\Definition\ArgumentDefinition::getValue
  */
 public function testDefinitionGetter()
 {
     $name = "MyAnnotation";
     $value = "some value";
     $annotationDefinition = new ArgumentDefinition($value, $name);
     $this->assertEquals($name, $annotationDefinition->getName());
     $this->assertEquals($value, $annotationDefinition->getValue());
 }
 /**
  * Returns the argument index.
  * @param \Brickoo\Component\IoC\Definition\ArgumentDefinition $argument
  * @param integer $currentIndex
  * @return string|integer the argument index
  */
 private function getArgumentIndex(ArgumentDefinition $argument, $currentIndex)
 {
     return $argument->hasName() ? $argument->getName() : $currentIndex;
 }