/** * @return ClassBuilderProperty */ public function createPropertyIfNotExists($propertyName, Type $type = NULL) { if ($this->classBuilder->hasProperty($propertyName)) { return $this->classBuilder->getProperty($propertyName); } else { return $this->classBuilder->addProperty($propertyName, $type); } }
public function testPropertyElevation() { $gClass = new GClass('Psc\\OtherException'); $parentClass = new GClass('Psc\\Exception'); $classBuilder = new ClassBuilder($gClass); $classBuilder->setParentClass($parentClass); $this->assertInstanceOf('Psc\\Code\\Generate\\ClassBuilderProperty', $classBuilder->getProperty('message')); }
/** * @depends testAddProperty */ public function testGeneratePropertiesConstructor(ClassBuilder $cb) { $this->assertChainable($cb->generatePropertiesConstructor(array($cb->getProperty('image'), $cb->getProperty('text'), $cb->getProperty('link')))); $this->assertTrue($cb->getGClass()->hasMethod('__construct')); $m = $cb->getGClass()->getMethod('__construct'); $this->assertCount(3, $m->getParameters()); list($p1, $p2, $p3) = $m->getParameters(); $this->assertEquals('image', $p1->getName()); $this->assertNull($p1->getHint()); $this->assertEquals('text', $p2->getName()); $this->assertNull($p1->getHint()); $this->assertEquals('link', $p3->getName()); $this->assertEquals('Webforge\\Types\\Interfaces\\Link', $p3->getHint()->getFQN()); $constructorPHP = <<<'PHP' $this->setImage($image); $this->setText($text); $this->setLink($link); PHP; $this->assertEquals($constructorPHP, $m->getBody()); //print $cb->getGClass()->php(); }