Chris@0: createFunctionBuilder('test') Chris@0: ->makeReturnByRef() Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\Function_('test', array( Chris@0: 'byRef' => true Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testParams() { Chris@0: $param1 = new Node\Param('test1'); Chris@0: $param2 = new Node\Param('test2'); Chris@0: $param3 = new Node\Param('test3'); Chris@0: Chris@0: $node = $this->createFunctionBuilder('test') Chris@0: ->addParam($param1) Chris@0: ->addParams(array($param2, $param3)) Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\Function_('test', array( Chris@0: 'params' => array($param1, $param2, $param3) Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testStmts() { Chris@0: $stmt1 = new Print_(new String_('test1')); Chris@0: $stmt2 = new Print_(new String_('test2')); Chris@0: $stmt3 = new Print_(new String_('test3')); Chris@0: Chris@0: $node = $this->createFunctionBuilder('test') Chris@0: ->addStmt($stmt1) Chris@0: ->addStmts(array($stmt2, $stmt3)) Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\Function_('test', array( Chris@0: 'stmts' => array($stmt1, $stmt2, $stmt3) Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testDocComment() { Chris@0: $node = $this->createFunctionBuilder('test') Chris@0: ->setDocComment('/** Test */') Chris@0: ->getNode(); Chris@0: Chris@0: $this->assertEquals(new Stmt\Function_('test', array(), array( Chris@0: 'comments' => array(new Comment\Doc('/** Test */')) Chris@0: )), $node); Chris@0: } Chris@0: Chris@0: public function testReturnType() { Chris@0: $node = $this->createFunctionBuilder('test') Chris@0: ->setReturnType('void') Chris@0: ->getNode(); Chris@0: Chris@0: $this->assertEquals(new Stmt\Function_('test', array( Chris@0: 'returnType' => 'void' Chris@0: ), array()), $node); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \LogicException Chris@0: * @expectedExceptionMessage void type cannot be nullable Chris@0: */ Chris@0: public function testInvalidNullableVoidType() { Chris@0: $this->createFunctionBuilder('test')->setReturnType('?void'); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \LogicException Chris@0: * @expectedExceptionMessage Expected parameter node, got "Name" Chris@0: */ Chris@0: public function testInvalidParamError() { Chris@0: $this->createFunctionBuilder('test') Chris@0: ->addParam(new Node\Name('foo')) Chris@0: ; Chris@0: } Chris@0: }