Chris@0: pass = new FunctionContextPass(); Chris@0: $this->traverser = new NodeTraverser(); Chris@0: $this->traverser->addVisitor($this->pass); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @dataProvider validStatements Chris@0: */ Chris@0: public function testProcessStatementPasses($code) Chris@0: { Chris@0: $stmts = $this->parse($code); Chris@0: $this->traverser->traverse($stmts); Chris@12: Chris@12: // @todo a better thing to assert here? Chris@12: $this->assertTrue(true); Chris@0: } Chris@0: Chris@0: public function validStatements() Chris@0: { Chris@0: return array( Chris@0: array('function foo() { yield; }'), Chris@0: array('if (function(){ yield; })'), Chris@0: ); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @dataProvider invalidYieldStatements Chris@0: * @expectedException \Psy\Exception\FatalErrorException Chris@0: */ Chris@0: public function testInvalidYield($code) Chris@0: { Chris@0: if (version_compare(PHP_VERSION, '5.4', '<')) { Chris@0: $this->markTestSkipped(); Chris@0: } Chris@0: Chris@0: $stmts = $this->parse($code); Chris@0: $this->traverser->traverse($stmts); Chris@0: } Chris@0: Chris@0: public function invalidYieldStatements() Chris@0: { Chris@0: return array( Chris@0: array('yield'), Chris@0: array('if (yield)'), Chris@0: ); Chris@0: } Chris@0: }