sonarrradarrplexorganizrnginxdashboardlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximux
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							106 lines
						
					
					
						
							2.8 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							106 lines
						
					
					
						
							2.8 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 FunctionTest extends \PHPUnit_Framework_TestCase
							 | 
						|
								{
							 | 
						|
								    public function createFunctionBuilder($name) {
							 | 
						|
								        return new Function_($name);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testReturnByRef() {
							 | 
						|
								        $node = $this->createFunctionBuilder('test')
							 | 
						|
								            ->makeReturnByRef()
							 | 
						|
								            ->getNode()
							 | 
						|
								        ;
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(
							 | 
						|
								            new Stmt\Function_('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->createFunctionBuilder('test')
							 | 
						|
								            ->addParam($param1)
							 | 
						|
								            ->addParams(array($param2, $param3))
							 | 
						|
								            ->getNode()
							 | 
						|
								        ;
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(
							 | 
						|
								            new Stmt\Function_('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->createFunctionBuilder('test')
							 | 
						|
								            ->addStmt($stmt1)
							 | 
						|
								            ->addStmts(array($stmt2, $stmt3))
							 | 
						|
								            ->getNode()
							 | 
						|
								        ;
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(
							 | 
						|
								            new Stmt\Function_('test', array(
							 | 
						|
								                'stmts' => array($stmt1, $stmt2, $stmt3)
							 | 
						|
								            )),
							 | 
						|
								            $node
							 | 
						|
								        );
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testDocComment() {
							 | 
						|
								        $node = $this->createFunctionBuilder('test')
							 | 
						|
								            ->setDocComment('/** Test */')
							 | 
						|
								            ->getNode();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(new Stmt\Function_('test', array(), array(
							 | 
						|
								            'comments' => array(new Comment\Doc('/** Test */'))
							 | 
						|
								        )), $node);
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    public function testReturnType() {
							 | 
						|
								        $node = $this->createFunctionBuilder('test')
							 | 
						|
								            ->setReturnType('void')
							 | 
						|
								            ->getNode();
							 | 
						|
								
							 | 
						|
								        $this->assertEquals(new Stmt\Function_('test', array(
							 | 
						|
								            'returnType' => 'void'
							 | 
						|
								        ), array()), $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'))
							 | 
						|
								        ;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |