/**
  * Creates a Descriptor from a provided class.
  *
  * @return void
  */
 public function testCreateArgumentDescriptorFromReflector()
 {
     $name = 'goodArgument';
     $type = 'boolean';
     $argumentReflectorMock = m::mock('phpDocumentor\\Reflection\\FunctionReflector\\ArgumentReflector');
     $argumentReflectorMock->shouldReceive('getName')->andReturn($name);
     $argumentReflectorMock->shouldReceive('getType')->andReturn($type);
     $argumentReflectorMock->shouldReceive('getDefault')->andReturn(false);
     // Turns out its a bad argument ;)
     $descriptor = $this->fixture->create($argumentReflectorMock);
     $this->assertSame($name, $descriptor->getName());
     $this->assertSame(array($type), $descriptor->getTypes());
     $this->assertSame(false, $descriptor->getDefault());
 }
 /**
  * Creates a Descriptor from the provided data.
  *
  * @param FunctionReflector $data
  *
  * @return FunctionDescriptor
  */
 public function create($data)
 {
     $functionDescriptor = new FunctionDescriptor();
     $functionDescriptor->setFullyQualifiedStructuralElementName($data->getName() . '()');
     $functionDescriptor->setName($data->getShortName());
     $functionDescriptor->setLine($data->getLinenumber());
     // Reflection library formulates namespace as global but this is not wanted for phpDocumentor itself
     $functionDescriptor->setNamespace('\\' . (strtolower($data->getNamespace()) == 'global' ? '' : $data->getNamespace()));
     $this->assembleDocBlock($data->getDocBlock(), $functionDescriptor);
     foreach ($data->getArguments() as $argument) {
         $argumentAssembler = new ArgumentAssembler();
         $argumentDescriptor = $argumentAssembler->create($argument, $functionDescriptor->getTags()->get('param', array()));
         $functionDescriptor->getArguments()->set($argumentDescriptor->getName(), $argumentDescriptor);
     }
     return $functionDescriptor;
 }
 /**
  * Prepares a mock Argument with the given name.
  *
  * @param string $argumentName
  *
  * @return ArgumentDescriptor|m\MockInterface
  */
 protected function givenAnArgumentWithName($argumentName)
 {
     $argumentMock = m::mock('phpDocumentor\\Descriptor\\ArgumentDescriptor');
     $argumentMock->shouldReceive('getName')->andReturn($argumentName);
     $this->argumentAssemblerMock->shouldReceive('create')->andReturn($argumentMock);
     return $argumentMock;
 }
 /**
  * Creates a new ArgumentDescriptor from the given Reflector and Param.
  *
  * @param FunctionDescriptor                  $functionDescriptor
  * @param FunctionReflector\ArgumentReflector $argument
  *
  * @return ArgumentDescriptor
  */
 protected function createArgumentDescriptor($functionDescriptor, $argument)
 {
     $params = $functionDescriptor->getTags()->get('param', array());
     if (!$this->argumentAssembler->getBuilder()) {
         $this->argumentAssembler->setBuilder($this->builder);
     }
     return $this->argumentAssembler->create($argument, $params);
 }
 /**
  * Adds a single reflected Argument to the Method Descriptor.
  *
  * @param ArgumentReflector $argument
  * @param MethodDescriptor  $descriptor
  *
  * @return void
  */
 protected function addArgument($argument, $descriptor)
 {
     $params = $descriptor->getTags()->get('param', array());
     if (!$this->argumentAssembler->getBuilder()) {
         $this->argumentAssembler->setBuilder($this->builder);
     }
     $argumentDescriptor = $this->argumentAssembler->create($argument, $params);
     $descriptor->addArgument($argumentDescriptor->getName(), $argumentDescriptor);
 }
 /**
  * Creates a Descriptor from the provided data.
  *
  * @param MethodReflector $data
  *
  * @return MethodDescriptor
  */
 public function create($data)
 {
     $methodDescriptor = new MethodDescriptor();
     $methodDescriptor->setFullyQualifiedStructuralElementName($data->getName() . '()');
     $methodDescriptor->setName($data->getShortName());
     $methodDescriptor->setVisibility($data->getVisibility() ?: 'public');
     $methodDescriptor->setFinal($data->isFinal());
     $methodDescriptor->setAbstract($data->isAbstract());
     $methodDescriptor->setStatic($data->isStatic());
     $this->assembleDocBlock($data->getDocBlock(), $methodDescriptor);
     foreach ($data->getArguments() as $argument) {
         $argumentAssembler = new ArgumentAssembler();
         $argumentDescriptor = $argumentAssembler->create($argument, $methodDescriptor->getTags()->get('param', array()));
         $methodDescriptor->getArguments()->set($argumentDescriptor->getName(), $argumentDescriptor);
     }
     $methodDescriptor->setLine($data->getLinenumber());
     return $methodDescriptor;
 }
 /**
  * @covers phpDocumentor\Descriptor\Builder\Reflector\ArgumentAssembler::create
  * @covers phpDocumentor\Descriptor\Builder\Reflector\ArgumentAssembler::overwriteTypeAndDescriptionFromParamTag
  */
 public function testIfTypeAndDescriptionAreSetFromParamDescriptor()
 {
     // Arrange
     $name = 'goodArgument';
     $type = 'boolean';
     $argumentReflectorMock = $this->givenAnArgumentReflectorWithNameAndType($name, $type);
     $types = $this->thenProjectBuilderShouldSetCollectionOfExpectedTypes(array($type));
     // Mock a paramDescriptor
     $paramDescriptorTagMock = m::mock('phpDocumentor\\Descriptor\\Tag\\ParamDescriptor');
     $paramDescriptorTagMock->shouldReceive('getVariableName')->once()->andReturn($name);
     $paramDescriptorTagMock->shouldReceive('getDescription')->once()->andReturn('Is this a good argument, or nah?');
     $paramDescriptorTagMock->shouldReceive('getTypes')->once()->andReturn($types);
     // Act
     $descriptor = $this->fixture->create($argumentReflectorMock, array($paramDescriptorTagMock));
     // Assert
     $this->assertSame($name, $descriptor->getName());
     $this->assertSame($types, $descriptor->getTypes());
     $this->assertSame(false, $descriptor->getDefault());
     $this->assertSame(false, $descriptor->isByReference());
 }