Example #1
0
 /**
  * @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);
     }
 }
Example #2
0
 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();
    }