Chris@0: assertInstanceOf($className, $factory->$methodName('test')); Chris@0: } Chris@0: Chris@0: public function provideTestFactory() { Chris@0: return array( Chris@0: array('namespace', 'PhpParser\Builder\Namespace_'), Chris@0: array('class', 'PhpParser\Builder\Class_'), Chris@0: array('interface', 'PhpParser\Builder\Interface_'), Chris@0: array('trait', 'PhpParser\Builder\Trait_'), Chris@0: array('method', 'PhpParser\Builder\Method'), Chris@0: array('function', 'PhpParser\Builder\Function_'), Chris@0: array('property', 'PhpParser\Builder\Property'), Chris@0: array('param', 'PhpParser\Builder\Param'), Chris@0: array('use', 'PhpParser\Builder\Use_'), Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testNonExistingMethod() { Chris@0: $this->setExpectedException('LogicException', 'Method "foo" does not exist'); Chris@0: $factory = new BuilderFactory(); Chris@0: $factory->foo(); Chris@0: } Chris@0: Chris@0: public function testIntegration() { Chris@0: $factory = new BuilderFactory; Chris@0: $node = $factory->namespace('Name\Space') Chris@0: ->addStmt($factory->use('Foo\Bar\SomeOtherClass')) Chris@0: ->addStmt($factory->use('Foo\Bar')->as('A')) Chris@0: ->addStmt($factory Chris@0: ->class('SomeClass') Chris@0: ->extend('SomeOtherClass') Chris@0: ->implement('A\Few', '\Interfaces') Chris@0: ->makeAbstract() Chris@0: Chris@0: ->addStmt($factory->method('firstMethod')) Chris@0: Chris@0: ->addStmt($factory->method('someMethod') Chris@0: ->makePublic() Chris@0: ->makeAbstract() Chris@0: ->addParam($factory->param('someParam')->setTypeHint('SomeClass')) Chris@0: ->setDocComment('/** Chris@0: * This method does something. Chris@0: * Chris@0: * @param SomeClass And takes a parameter Chris@0: */')) Chris@0: Chris@0: ->addStmt($factory->method('anotherMethod') Chris@0: ->makeProtected() Chris@0: ->addParam($factory->param('someParam')->setDefault('test')) Chris@0: ->addStmt(new Expr\Print_(new Expr\Variable('someParam')))) Chris@0: Chris@0: ->addStmt($factory->property('someProperty')->makeProtected()) Chris@0: ->addStmt($factory->property('anotherProperty') Chris@0: ->makePrivate() Chris@0: ->setDefault(array(1, 2, 3)))) Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $expected = <<<'EOC' Chris@0: prettyPrintFile($stmts); Chris@0: Chris@0: $this->assertEquals( Chris@0: str_replace("\r\n", "\n", $expected), Chris@0: str_replace("\r\n", "\n", $generated) Chris@0: ); Chris@0: } Chris@0: }