Mercurial > hg > isophonics-drupal-site
view vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line source
<?php declare(strict_types=1); namespace PhpParser\Builder; use PhpParser\Comment; use PhpParser\Node; use PhpParser\Node\Expr\Print_; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Scalar\String_; use PhpParser\Node\Stmt; use PHPUnit\Framework\TestCase; class FunctionTest extends TestCase { public function createFunctionBuilder($name) { return new Function_($name); } public function testReturnByRef() { $node = $this->createFunctionBuilder('test') ->makeReturnByRef() ->getNode() ; $this->assertEquals( new Stmt\Function_('test', [ 'byRef' => true ]), $node ); } public function testParams() { $param1 = new Node\Param(new Variable('test1')); $param2 = new Node\Param(new Variable('test2')); $param3 = new Node\Param(new Variable('test3')); $node = $this->createFunctionBuilder('test') ->addParam($param1) ->addParams([$param2, $param3]) ->getNode() ; $this->assertEquals( new Stmt\Function_('test', [ 'params' => [$param1, $param2, $param3] ]), $node ); } public function testStmts() { $stmt1 = new Print_(new String_('test1')); $stmt2 = new Print_(new String_('test2')); $stmt3 = new Print_(new String_('test3')); $node = $this->createFunctionBuilder('test') ->addStmt($stmt1) ->addStmts([$stmt2, $stmt3]) ->getNode() ; $this->assertEquals( new Stmt\Function_('test', [ 'stmts' => [ new Stmt\Expression($stmt1), new Stmt\Expression($stmt2), new Stmt\Expression($stmt3), ] ]), $node ); } public function testDocComment() { $node = $this->createFunctionBuilder('test') ->setDocComment('/** Test */') ->getNode(); $this->assertEquals(new Stmt\Function_('test', [], [ 'comments' => [new Comment\Doc('/** Test */')] ]), $node); } public function testReturnType() { $node = $this->createFunctionBuilder('test') ->setReturnType('void') ->getNode(); $this->assertEquals(new Stmt\Function_('test', [ 'returnType' => 'void' ], []), $node); } /** * @expectedException \LogicException * @expectedExceptionMessage void type cannot be nullable */ public function testInvalidNullableVoidType() { $this->createFunctionBuilder('test')->setReturnType('?void'); } /** * @expectedException \LogicException * @expectedExceptionMessage Expected parameter node, got "Name" */ public function testInvalidParamError() { $this->createFunctionBuilder('test') ->addParam(new Node\Name('foo')) ; } /** * @expectedException \LogicException * @expectedExceptionMessage Expected statement or expression node */ public function testAddNonStmt() { $this->createFunctionBuilder('test') ->addStmt(new Node\Name('Test')); } }