sonarrradarrplexorganizrnginxdashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboard
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							163 lines
						
					
					
						
							4.4 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							163 lines
						
					
					
						
							4.4 KiB
						
					
					
				| <?php | |
| 
 | |
| namespace PhpParser\Builder; | |
| 
 | |
| use PhpParser\Comment; | |
| use PhpParser\Node; | |
| use PhpParser\Node\Expr\Print_; | |
| use PhpParser\Node\Scalar\String_; | |
| use PhpParser\Node\Stmt; | |
| 
 | |
| class MethodTest extends \PHPUnit_Framework_TestCase | |
| { | |
|     public function createMethodBuilder($name) { | |
|         return new Method($name); | |
|     } | |
| 
 | |
|     public function testModifiers() { | |
|         $node = $this->createMethodBuilder('test') | |
|             ->makePublic() | |
|             ->makeAbstract() | |
|             ->makeStatic() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'flags' => Stmt\Class_::MODIFIER_PUBLIC | |
|                          | Stmt\Class_::MODIFIER_ABSTRACT | |
|                          | Stmt\Class_::MODIFIER_STATIC, | |
|                 'stmts' => null, | |
|             )), | |
|             $node | |
|         ); | |
| 
 | |
|         $node = $this->createMethodBuilder('test') | |
|             ->makeProtected() | |
|             ->makeFinal() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'flags' => Stmt\Class_::MODIFIER_PROTECTED | |
|                          | Stmt\Class_::MODIFIER_FINAL | |
|             )), | |
|             $node | |
|         ); | |
| 
 | |
|         $node = $this->createMethodBuilder('test') | |
|             ->makePrivate() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'type' => Stmt\Class_::MODIFIER_PRIVATE | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testReturnByRef() { | |
|         $node = $this->createMethodBuilder('test') | |
|             ->makeReturnByRef() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'byRef' => true | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testParams() { | |
|         $param1 = new Node\Param('test1'); | |
|         $param2 = new Node\Param('test2'); | |
|         $param3 = new Node\Param('test3'); | |
| 
 | |
|         $node = $this->createMethodBuilder('test') | |
|             ->addParam($param1) | |
|             ->addParams(array($param2, $param3)) | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'params' => array($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->createMethodBuilder('test') | |
|             ->addStmt($stmt1) | |
|             ->addStmts(array($stmt2, $stmt3)) | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\ClassMethod('test', array( | |
|                 'stmts' => array($stmt1, $stmt2, $stmt3) | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
|     public function testDocComment() { | |
|         $node = $this->createMethodBuilder('test') | |
|             ->setDocComment('/** Test */') | |
|             ->getNode(); | |
| 
 | |
|         $this->assertEquals(new Stmt\ClassMethod('test', array(), array( | |
|             'comments' => array(new Comment\Doc('/** Test */')) | |
|         )), $node); | |
|     } | |
| 
 | |
|     public function testReturnType() { | |
|         $node = $this->createMethodBuilder('test') | |
|             ->setReturnType('bool') | |
|             ->getNode(); | |
|         $this->assertEquals(new Stmt\ClassMethod('test', array( | |
|             'returnType' => 'bool' | |
|         ), array()), $node); | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Cannot add statements to an abstract method | |
|      */ | |
|     public function testAddStmtToAbstractMethodError() { | |
|         $this->createMethodBuilder('test') | |
|             ->makeAbstract() | |
|             ->addStmt(new Print_(new String_('test'))) | |
|         ; | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Cannot make method with statements abstract | |
|      */ | |
|     public function testMakeMethodWithStmtsAbstractError() { | |
|         $this->createMethodBuilder('test') | |
|             ->addStmt(new Print_(new String_('test'))) | |
|             ->makeAbstract() | |
|         ; | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Expected parameter node, got "Name" | |
|      */ | |
|     public function testInvalidParamError() { | |
|         $this->createMethodBuilder('test') | |
|             ->addParam(new Node\Name('foo')) | |
|         ; | |
|     } | |
| }
 | |
| 
 |