public function testFromReflection()
{
$classDoc = new Docblock('/**
* Doc Comment.
*
* @author Johannes M. Schmitt <*****@*****.**>
*/');
$propDoc = new Docblock('/**
* @var integer
*/');
$class = new PhpClass();
$class->setQualifiedName('gossi\\codegen\\tests\\fixture\\Entity')->setAbstract(true)->setDocblock($classDoc)->setDescription($classDoc->getShortDescription())->setLongDescription($classDoc->getLongDescription())->setProperty(PhpProperty::create('id')->setVisibility('private')->setDocblock($propDoc)->setType('integer')->setDescription($propDoc->getShortDescription()))->setProperty(PhpProperty::create('enabled')->setVisibility('private')->setDefaultValue(false));
$methodDoc = new Docblock('/**
* Another doc comment.
*
* @param unknown_type $a
* @param array $b
* @param \\stdClass $c
* @param string $d
* @param callable $e
*/');
$method = PhpMethod::create('__construct')->setFinal(true)->addParameter(PhpParameter::create('a')->setType('unknown_type'))->addParameter(PhpParameter::create()->setName('b')->setType('array')->setPassedByReference(true))->addParameter(PhpParameter::create()->setName('c')->setType('\\stdClass'))->addParameter(PhpParameter::create()->setName('d')->setType('string')->setDefaultValue('foo'))->addParameter(PhpParameter::create()->setName('e')->setType('callable'))->setDocblock($methodDoc)->setDescription($methodDoc->getShortDescription())->setLongDescription($methodDoc->getLongDescription());
$class->setMethod($method);
$class->setMethod(PhpMethod::create('foo')->setAbstract(true)->setVisibility('protected'));
$class->setMethod(PhpMethod::create('bar')->setStatic(true)->setVisibility('private'));
$this->assertEquals($class, PhpClass::fromReflection(new \ReflectionClass('gossi\\codegen\\tests\\fixture\\Entity')));
$class = new PhpClass('gossi\\codegen\\tests\\fixture\\ClassWithConstants');
$class->setConstant('FOO', 'bar');
$this->assertEquals($class, PhpClass::fromReflection(new \ReflectionClass('gossi\\codegen\\tests\\fixture\\ClassWithConstants')));
}