/** * @test * @expectedException Stagehand_PHP_Class_Exception */ public function catchTheExceptionIfAddsInterfaceIsDuplicated() { $className = 'ExampleForInterfaceDuplicate'; $class = new Stagehand_PHP_Class($className); $interface1 = new Stagehand_PHP_Class('ExampleForInterfaceUpdateInterface1'); $interface2 = new Stagehand_PHP_Class('ExampleForInterfaceUpdateInterface1'); $class->addInterface($interface1); $class->addInterface($interface2); }
/** * unticked_class_declaration_statement_2 * interface_entry T_STRING interface_extends_list '{' class_statement_list '}' */ protected function unticked_class_declaration_statement_2($params) { $className = $params[1]->getValue(); $class = new Stagehand_PHP_Class($className); $class->defineInterface(); if ($params[2] && is_array($params[2])) { foreach ($params[2] 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); }