annotate vendor/nikic/php-parser/test/PhpParser/Builder/MethodTest.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 MethodTest extends \PHPUnit_Framework_TestCase
Chris@0 12 {
Chris@0 13 public function createMethodBuilder($name) {
Chris@0 14 return new Method($name);
Chris@0 15 }
Chris@0 16
Chris@0 17 public function testModifiers() {
Chris@0 18 $node = $this->createMethodBuilder('test')
Chris@0 19 ->makePublic()
Chris@0 20 ->makeAbstract()
Chris@0 21 ->makeStatic()
Chris@0 22 ->getNode()
Chris@0 23 ;
Chris@0 24
Chris@0 25 $this->assertEquals(
Chris@0 26 new Stmt\ClassMethod('test', array(
Chris@0 27 'flags' => Stmt\Class_::MODIFIER_PUBLIC
Chris@0 28 | Stmt\Class_::MODIFIER_ABSTRACT
Chris@0 29 | Stmt\Class_::MODIFIER_STATIC,
Chris@0 30 'stmts' => null,
Chris@0 31 )),
Chris@0 32 $node
Chris@0 33 );
Chris@0 34
Chris@0 35 $node = $this->createMethodBuilder('test')
Chris@0 36 ->makeProtected()
Chris@0 37 ->makeFinal()
Chris@0 38 ->getNode()
Chris@0 39 ;
Chris@0 40
Chris@0 41 $this->assertEquals(
Chris@0 42 new Stmt\ClassMethod('test', array(
Chris@0 43 'flags' => Stmt\Class_::MODIFIER_PROTECTED
Chris@0 44 | Stmt\Class_::MODIFIER_FINAL
Chris@0 45 )),
Chris@0 46 $node
Chris@0 47 );
Chris@0 48
Chris@0 49 $node = $this->createMethodBuilder('test')
Chris@0 50 ->makePrivate()
Chris@0 51 ->getNode()
Chris@0 52 ;
Chris@0 53
Chris@0 54 $this->assertEquals(
Chris@0 55 new Stmt\ClassMethod('test', array(
Chris@0 56 'type' => Stmt\Class_::MODIFIER_PRIVATE
Chris@0 57 )),
Chris@0 58 $node
Chris@0 59 );
Chris@0 60 }
Chris@0 61
Chris@0 62 public function testReturnByRef() {
Chris@0 63 $node = $this->createMethodBuilder('test')
Chris@0 64 ->makeReturnByRef()
Chris@0 65 ->getNode()
Chris@0 66 ;
Chris@0 67
Chris@0 68 $this->assertEquals(
Chris@0 69 new Stmt\ClassMethod('test', array(
Chris@0 70 'byRef' => true
Chris@0 71 )),
Chris@0 72 $node
Chris@0 73 );
Chris@0 74 }
Chris@0 75
Chris@0 76 public function testParams() {
Chris@0 77 $param1 = new Node\Param('test1');
Chris@0 78 $param2 = new Node\Param('test2');
Chris@0 79 $param3 = new Node\Param('test3');
Chris@0 80
Chris@0 81 $node = $this->createMethodBuilder('test')
Chris@0 82 ->addParam($param1)
Chris@0 83 ->addParams(array($param2, $param3))
Chris@0 84 ->getNode()
Chris@0 85 ;
Chris@0 86
Chris@0 87 $this->assertEquals(
Chris@0 88 new Stmt\ClassMethod('test', array(
Chris@0 89 'params' => array($param1, $param2, $param3)
Chris@0 90 )),
Chris@0 91 $node
Chris@0 92 );
Chris@0 93 }
Chris@0 94
Chris@0 95 public function testStmts() {
Chris@0 96 $stmt1 = new Print_(new String_('test1'));
Chris@0 97 $stmt2 = new Print_(new String_('test2'));
Chris@0 98 $stmt3 = new Print_(new String_('test3'));
Chris@0 99
Chris@0 100 $node = $this->createMethodBuilder('test')
Chris@0 101 ->addStmt($stmt1)
Chris@0 102 ->addStmts(array($stmt2, $stmt3))
Chris@0 103 ->getNode()
Chris@0 104 ;
Chris@0 105
Chris@0 106 $this->assertEquals(
Chris@0 107 new Stmt\ClassMethod('test', array(
Chris@0 108 'stmts' => array($stmt1, $stmt2, $stmt3)
Chris@0 109 )),
Chris@0 110 $node
Chris@0 111 );
Chris@0 112 }
Chris@0 113 public function testDocComment() {
Chris@0 114 $node = $this->createMethodBuilder('test')
Chris@0 115 ->setDocComment('/** Test */')
Chris@0 116 ->getNode();
Chris@0 117
Chris@0 118 $this->assertEquals(new Stmt\ClassMethod('test', array(), array(
Chris@0 119 'comments' => array(new Comment\Doc('/** Test */'))
Chris@0 120 )), $node);
Chris@0 121 }
Chris@0 122
Chris@0 123 public function testReturnType() {
Chris@0 124 $node = $this->createMethodBuilder('test')
Chris@0 125 ->setReturnType('bool')
Chris@0 126 ->getNode();
Chris@0 127 $this->assertEquals(new Stmt\ClassMethod('test', array(
Chris@0 128 'returnType' => 'bool'
Chris@0 129 ), array()), $node);
Chris@0 130 }
Chris@0 131
Chris@0 132 /**
Chris@0 133 * @expectedException \LogicException
Chris@0 134 * @expectedExceptionMessage Cannot add statements to an abstract method
Chris@0 135 */
Chris@0 136 public function testAddStmtToAbstractMethodError() {
Chris@0 137 $this->createMethodBuilder('test')
Chris@0 138 ->makeAbstract()
Chris@0 139 ->addStmt(new Print_(new String_('test')))
Chris@0 140 ;
Chris@0 141 }
Chris@0 142
Chris@0 143 /**
Chris@0 144 * @expectedException \LogicException
Chris@0 145 * @expectedExceptionMessage Cannot make method with statements abstract
Chris@0 146 */
Chris@0 147 public function testMakeMethodWithStmtsAbstractError() {
Chris@0 148 $this->createMethodBuilder('test')
Chris@0 149 ->addStmt(new Print_(new String_('test')))
Chris@0 150 ->makeAbstract()
Chris@0 151 ;
Chris@0 152 }
Chris@0 153
Chris@0 154 /**
Chris@0 155 * @expectedException \LogicException
Chris@0 156 * @expectedExceptionMessage Expected parameter node, got "Name"
Chris@0 157 */
Chris@0 158 public function testInvalidParamError() {
Chris@0 159 $this->createMethodBuilder('test')
Chris@0 160 ->addParam(new Node\Name('foo'))
Chris@0 161 ;
Chris@0 162 }
Chris@0 163 }