Chris@0: pass = new AssignThisVariablePass(); Chris@0: $this->traverser = new NodeTraverser(); Chris@0: $this->traverser->addVisitor($this->pass); Chris@0: } Chris@0: Chris@0: /** Chris@0: * @dataProvider invalidStatements Chris@0: * @expectedException \Psy\Exception\FatalErrorException Chris@0: */ Chris@0: public function testProcessStatementFails($code) Chris@0: { Chris@0: $stmts = $this->parse($code); Chris@0: $this->traverser->traverse($stmts); Chris@0: } Chris@0: Chris@0: public function invalidStatements() Chris@0: { Chris@0: return array( Chris@0: array('$this = 3'), Chris@0: array('strtolower($this = "this")'), Chris@0: ); 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('$this'), Chris@0: array('$a = $this'), Chris@0: array('$a = "this"; $$a = 3'), Chris@0: array('$$this = "b"'), Chris@0: ); Chris@0: } Chris@0: }