Chris@13: traverser = new NodeTraverser(); Chris@13: $this->traverser->addVisitor(new SudoVisitor()); Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider propertyFetches Chris@13: */ Chris@13: public function testPropertyFetch($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function propertyFetches() Chris@13: { Chris@13: return [ Chris@13: ['$a->b', "\Psy\Sudo::fetchProperty(\$a, 'b');"], Chris@13: ['$a->$b', '\Psy\Sudo::fetchProperty($a, $b);'], Chris@13: ["\$a->{'b'}", "\Psy\Sudo::fetchProperty(\$a, 'b');"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider propertyAssigns Chris@13: */ Chris@13: public function testPropertyAssign($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function propertyAssigns() Chris@13: { Chris@13: return [ Chris@13: ['$a->b = $c', "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"], Chris@13: ['$a->$b = $c', '\Psy\Sudo::assignProperty($a, $b, $c);'], Chris@13: ["\$a->{'b'} = \$c", "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider methodCalls Chris@13: */ Chris@13: public function testMethodCall($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function methodCalls() Chris@13: { Chris@13: return [ Chris@13: ['$a->b()', "\Psy\Sudo::callMethod(\$a, 'b');"], Chris@13: ['$a->$b()', '\Psy\Sudo::callMethod($a, $b);'], Chris@13: ["\$a->b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, 'b', \$c, 'd');"], Chris@13: ["\$a->\$b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, \$b, \$c, 'd');"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider staticPropertyFetches Chris@13: */ Chris@13: public function testStaticPropertyFetch($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function staticPropertyFetches() Chris@13: { Chris@13: return [ Chris@13: ['A::$b', "\Psy\Sudo::fetchStaticProperty('A', 'b');"], Chris@13: ['$a::$b', "\Psy\Sudo::fetchStaticProperty(\$a, 'b');"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider staticPropertyAssigns Chris@13: */ Chris@13: public function testStaticPropertyAssign($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function staticPropertyAssigns() Chris@13: { Chris@13: return [ Chris@13: ['A::$b = $c', "\Psy\Sudo::assignStaticProperty('A', 'b', \$c);"], Chris@13: ['$a::$b = $c', "\Psy\Sudo::assignStaticProperty(\$a, 'b', \$c);"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider staticCalls Chris@13: */ Chris@13: public function testStaticCall($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function staticCalls() Chris@13: { Chris@13: return [ Chris@13: ['A::b()', "\Psy\Sudo::callStatic('A', 'b');"], Chris@13: ['A::$b()', "\Psy\Sudo::callStatic('A', \$b);"], Chris@13: ["A::b(\$c, 'd')", "\Psy\Sudo::callStatic('A', 'b', \$c, 'd');"], Chris@13: ["A::\$b(\$c, 'd')", "\Psy\Sudo::callStatic('A', \$b, \$c, 'd');"], Chris@13: ]; Chris@13: } Chris@13: Chris@13: /** Chris@13: * @dataProvider classConstFetches Chris@13: */ Chris@13: public function testClassConstFetch($from, $to) Chris@13: { Chris@13: $this->assertProcessesAs($from, $to); Chris@13: } Chris@13: Chris@13: public function classConstFetches() Chris@13: { Chris@13: return [ Chris@13: ['A::B', "\Psy\Sudo::fetchClassConst('A', 'B');"], Chris@13: ]; Chris@13: } Chris@13: }