Chris@0: createMethodBuilder('test') Chris@0: ->makePublic() Chris@0: ->makeAbstract() Chris@0: ->makeStatic() Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\ClassMethod('test', array( Chris@0: 'flags' => Stmt\Class_::MODIFIER_PUBLIC Chris@0: | Stmt\Class_::MODIFIER_ABSTRACT Chris@0: | Stmt\Class_::MODIFIER_STATIC, Chris@0: 'stmts' => null, Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: Chris@0: $node = $this->createMethodBuilder('test') Chris@0: ->makeProtected() Chris@0: ->makeFinal() Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\ClassMethod('test', array( Chris@0: 'flags' => Stmt\Class_::MODIFIER_PROTECTED Chris@0: | Stmt\Class_::MODIFIER_FINAL Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: Chris@0: $node = $this->createMethodBuilder('test') Chris@0: ->makePrivate() Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\ClassMethod('test', array( Chris@0: 'type' => Stmt\Class_::MODIFIER_PRIVATE Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: } Chris@0: Chris@0: public function testReturnByRef() { Chris@0: $node = $this->createMethodBuilder('test') Chris@0: ->makeReturnByRef() Chris@0: ->getNode() Chris@0: ; Chris@0: Chris@0: $this->assertEquals( Chris@0: new Stmt\ClassMethod('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->createMethodBuilder('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\ClassMethod('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->createMethodBuilder('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\ClassMethod('test', array( Chris@0: 'stmts' => array($stmt1, $stmt2, $stmt3) Chris@0: )), Chris@0: $node Chris@0: ); Chris@0: } Chris@0: public function testDocComment() { Chris@0: $node = $this->createMethodBuilder('test') Chris@0: ->setDocComment('/** Test */') Chris@0: ->getNode(); Chris@0: Chris@0: $this->assertEquals(new Stmt\ClassMethod('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->createMethodBuilder('test') Chris@0: ->setReturnType('bool') Chris@0: ->getNode(); Chris@0: $this->assertEquals(new Stmt\ClassMethod('test', array( Chris@0: 'returnType' => 'bool' Chris@0: ), array()), $node); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \LogicException Chris@0: * @expectedExceptionMessage Cannot add statements to an abstract method Chris@0: */ Chris@0: public function testAddStmtToAbstractMethodError() { Chris@0: $this->createMethodBuilder('test') Chris@0: ->makeAbstract() Chris@0: ->addStmt(new Print_(new String_('test'))) Chris@0: ; Chris@0: } Chris@0: Chris@0: /** Chris@0: * @expectedException \LogicException Chris@0: * @expectedExceptionMessage Cannot make method with statements abstract Chris@0: */ Chris@0: public function testMakeMethodWithStmtsAbstractError() { Chris@0: $this->createMethodBuilder('test') Chris@0: ->addStmt(new Print_(new String_('test'))) Chris@0: ->makeAbstract() Chris@0: ; 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->createMethodBuilder('test') Chris@0: ->addParam(new Node\Name('foo')) Chris@0: ; Chris@0: } Chris@0: }