/** * @test */ public function useDocComment() { $className = 'ExampleForDocComment'; $docComment = "A tests class for DocComment.\n\n@package example\n@copyright 2009 Foo Bar <*****@*****.**>"; $formatedDocComment = "/**\n * A tests class for DocComment.\n *\n * @package example\n * @copyright 2009 Foo Bar <*****@*****.**>\n */"; $result = <<<EOF /** * A tests class for DocComment. * * @package example * @copyright 2009 Foo Bar <*****@*****.**> */ class ExampleForDocComment { } EOF; $class = new Stagehand_PHP_Class($className); $class->setDocComment($docComment); $this->assertEquals($class->getDocComment(), $formatedDocComment); $this->assertEquals($class->render(), $result); $class->setDocComment($formatedDocComment, true); $this->assertEquals($class->getDocComment(), $formatedDocComment); $this->assertEquals($class->render(), $result); $class->defineFinal(); $class->setParentClass('Foo'); $result = <<<EOF /** * A tests class for DocComment. * * @package example * @copyright 2009 Foo Bar <*****@*****.**> */ final class ExampleForDocComment extends Foo { } EOF; $this->assertEquals($class->render(), $result); }
/** * unticked_class_declaration_statement_1 * class_entry_type T_STRING extends_from implements_list '{' class_statement_list '}' */ protected function unticked_class_declaration_statement_1($params) { $className = $params[1]->getValue(); $class = new Stagehand_PHP_Class($className); if ($params[0] === 'abstract') { $class->defineAbstract(); } elseif ($params[0] === 'final') { $class->defineFinal(); } if ($params[2]) { $class->setParentClass($params[2]); } if ($params[3] && is_array($params[3])) { foreach ($params[3] as $interface) { $class->addInterface($interface); } } $this->_declarClass($class); return parent::execute(__FUNCTION__, $params); }
/** * @test */ public function generateClassCodeWithParentClassAndSomeInterface() { $parentClassName = 'ExampleForClassGenerationParentClass'; $interfaceA = 'ExampleForClassGenerationInterfaceA'; $interfaceB = 'ExampleForClassGenerationInterfaceB'; $className = 'ExampleForClassGenerationWithParentClassAndSomeInterface'; $class = new Stagehand_PHP_Class($className); $parentClass = new Stagehand_PHP_Class($parentClassName); $classInterfaceA = new Stagehand_PHP_Class($interfaceA); $classInterfaceB = new Stagehand_PHP_Class($interfaceB); $class->setParentClass($parentClass); $class->addInterface($classInterfaceA); $class->addInterface($classInterfaceB); $generator = new Stagehand_PHP_Class_CodeGenerator_Class($class); $code = $generator->generate(); $this->assertRegExp("/^class {$className} extends {$parentClassName} implements {$interfaceA}, {$interfaceB}/", $code); $class = new Stagehand_PHP_Class($className); $class->setParentClass($parentClassName); $class->addInterface($interfaceA); $class->addInterface($interfaceB); $generator = new Stagehand_PHP_Class_CodeGenerator_Class($class); $code = $generator->generate(); $this->assertRegExp("/^class {$className} extends {$parentClassName} implements {$interfaceA}, {$interfaceB}/", $code); }