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