Chris@0: pass = new CallTimePassByReferencePass(); 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: 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 invalidStatements() Chris@0: { Chris@0: return array( Chris@0: array('f(&$arg)'), Chris@0: array('$object->method($first, &$arg)'), Chris@0: array('$closure($first, &$arg, $last)'), Chris@0: array('A::b(&$arg)'), 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: $data = array( Chris@0: array('array(&$var)'), Chris@0: array('$a = &$b'), Chris@0: array('f(array(&$b))'), Chris@0: ); Chris@0: Chris@0: if (version_compare(PHP_VERSION, '5.4', '<')) { Chris@0: $data = array_merge($data, $this->invalidStatements()); Chris@0: } Chris@0: Chris@0: return $data; Chris@0: } Chris@0: }