annotate vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php @ 2:92f882872392

Trusted hosts, + remove migration modules
author Chris Cannam
date Tue, 05 Dec 2017 09:26:43 +0000
parents 4c8ae668cc8c
children 5fb285c0d0e3
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace PhpParser\Builder;
Chris@0 4
Chris@0 5 use PhpParser\Comment;
Chris@0 6 use PhpParser\Node;
Chris@0 7 use PhpParser\Node\Expr\Print_;
Chris@0 8 use PhpParser\Node\Scalar\String_;
Chris@0 9 use PhpParser\Node\Stmt;
Chris@0 10
Chris@0 11 class FunctionTest extends \PHPUnit_Framework_TestCase
Chris@0 12 {
Chris@0 13 public function createFunctionBuilder($name) {
Chris@0 14 return new Function_($name);
Chris@0 15 }
Chris@0 16
Chris@0 17 public function testReturnByRef() {
Chris@0 18 $node = $this->createFunctionBuilder('test')
Chris@0 19 ->makeReturnByRef()
Chris@0 20 ->getNode()
Chris@0 21 ;
Chris@0 22
Chris@0 23 $this->assertEquals(
Chris@0 24 new Stmt\Function_('test', array(
Chris@0 25 'byRef' => true
Chris@0 26 )),
Chris@0 27 $node
Chris@0 28 );
Chris@0 29 }
Chris@0 30
Chris@0 31 public function testParams() {
Chris@0 32 $param1 = new Node\Param('test1');
Chris@0 33 $param2 = new Node\Param('test2');
Chris@0 34 $param3 = new Node\Param('test3');
Chris@0 35
Chris@0 36 $node = $this->createFunctionBuilder('test')
Chris@0 37 ->addParam($param1)
Chris@0 38 ->addParams(array($param2, $param3))
Chris@0 39 ->getNode()
Chris@0 40 ;
Chris@0 41
Chris@0 42 $this->assertEquals(
Chris@0 43 new Stmt\Function_('test', array(
Chris@0 44 'params' => array($param1, $param2, $param3)
Chris@0 45 )),
Chris@0 46 $node
Chris@0 47 );
Chris@0 48 }
Chris@0 49
Chris@0 50 public function testStmts() {
Chris@0 51 $stmt1 = new Print_(new String_('test1'));
Chris@0 52 $stmt2 = new Print_(new String_('test2'));
Chris@0 53 $stmt3 = new Print_(new String_('test3'));
Chris@0 54
Chris@0 55 $node = $this->createFunctionBuilder('test')
Chris@0 56 ->addStmt($stmt1)
Chris@0 57 ->addStmts(array($stmt2, $stmt3))
Chris@0 58 ->getNode()
Chris@0 59 ;
Chris@0 60
Chris@0 61 $this->assertEquals(
Chris@0 62 new Stmt\Function_('test', array(
Chris@0 63 'stmts' => array($stmt1, $stmt2, $stmt3)
Chris@0 64 )),
Chris@0 65 $node
Chris@0 66 );
Chris@0 67 }
Chris@0 68
Chris@0 69 public function testDocComment() {
Chris@0 70 $node = $this->createFunctionBuilder('test')
Chris@0 71 ->setDocComment('/** Test */')
Chris@0 72 ->getNode();
Chris@0 73
Chris@0 74 $this->assertEquals(new Stmt\Function_('test', array(), array(
Chris@0 75 'comments' => array(new Comment\Doc('/** Test */'))
Chris@0 76 )), $node);
Chris@0 77 }
Chris@0 78
Chris@0 79 public function testReturnType() {
Chris@0 80 $node = $this->createFunctionBuilder('test')
Chris@0 81 ->setReturnType('void')
Chris@0 82 ->getNode();
Chris@0 83
Chris@0 84 $this->assertEquals(new Stmt\Function_('test', array(
Chris@0 85 'returnType' => 'void'
Chris@0 86 ), array()), $node);
Chris@0 87 }
Chris@0 88
Chris@0 89 /**
Chris@0 90 * @expectedException \LogicException
Chris@0 91 * @expectedExceptionMessage void type cannot be nullable
Chris@0 92 */
Chris@0 93 public function testInvalidNullableVoidType() {
Chris@0 94 $this->createFunctionBuilder('test')->setReturnType('?void');
Chris@0 95 }
Chris@0 96
Chris@0 97 /**
Chris@0 98 * @expectedException \LogicException
Chris@0 99 * @expectedExceptionMessage Expected parameter node, got "Name"
Chris@0 100 */
Chris@0 101 public function testInvalidParamError() {
Chris@0 102 $this->createFunctionBuilder('test')
Chris@0 103 ->addParam(new Node\Name('foo'))
Chris@0 104 ;
Chris@0 105 }
Chris@0 106 }