Viewing file: BuilderFactoryTest.php (3.5 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace PhpParser;
use PhpParser\Node\Expr;
class BuilderFactoryTest extends \PHPUnit_Framework_TestCase { /** * @dataProvider provideTestFactory */ public function testFactory($methodName, $className) { $factory = new BuilderFactory; $this->assertInstanceOf($className, $factory->$methodName('test')); }
public function provideTestFactory() { return array( array('namespace', 'PhpParser\Builder\Namespace_'), array('class', 'PhpParser\Builder\Class_'), array('interface', 'PhpParser\Builder\Interface_'), array('trait', 'PhpParser\Builder\Trait_'), array('method', 'PhpParser\Builder\Method'), array('function', 'PhpParser\Builder\Function_'), array('property', 'PhpParser\Builder\Property'), array('param', 'PhpParser\Builder\Param'), array('use', 'PhpParser\Builder\Use_'), ); }
public function testNonExistingMethod() { $this->setExpectedException('LogicException', 'Method "foo" does not exist'); $factory = new BuilderFactory(); $factory->foo(); }
public function testIntegration() { $factory = new BuilderFactory; $node = $factory->namespace('Name\Space') ->addStmt($factory->use('Foo\Bar\SomeOtherClass')) ->addStmt($factory->use('Foo\Bar')->as('A')) ->addStmt($factory ->class('SomeClass') ->extend('SomeOtherClass') ->implement('A\Few', '\Interfaces') ->makeAbstract()
->addStmt($factory->method('firstMethod'))
->addStmt($factory->method('someMethod') ->makePublic() ->makeAbstract() ->addParam($factory->param('someParam')->setTypeHint('SomeClass')) ->setDocComment('/** * This method does something. * * @param SomeClass And takes a parameter */'))
->addStmt($factory->method('anotherMethod') ->makeProtected() ->addParam($factory->param('someParam')->setDefault('test')) ->addStmt(new Expr\Print_(new Expr\Variable('someParam'))))
->addStmt($factory->property('someProperty')->makeProtected()) ->addStmt($factory->property('anotherProperty') ->makePrivate() ->setDefault(array(1, 2, 3)))) ->getNode() ;
$expected = <<<'EOC' <?php
namespace Name\Space;
use Foo\Bar\SomeOtherClass; use Foo\Bar as A; abstract class SomeClass extends SomeOtherClass implements A\Few, \Interfaces { protected $someProperty; private $anotherProperty = array(1, 2, 3); function firstMethod() { } /** * This method does something. * * @param SomeClass And takes a parameter */ public abstract function someMethod(SomeClass $someParam); protected function anotherMethod($someParam = 'test') { print $someParam; } } EOC;
$stmts = array($node); $prettyPrinter = new PrettyPrinter\Standard(); $generated = $prettyPrinter->prettyPrintFile($stmts);
$this->assertEquals( str_replace("\r\n", "\n", $expected), str_replace("\r\n", "\n", $generated) ); } }
|