annotate vendor/psy/psysh/test/Sudo/SudoVisitorTest.php @ 5:12f9dff5fda9 tip

Update to Drupal core 8.7.1
author Chris Cannam
date Thu, 09 May 2019 15:34:47 +0100
parents c75dbcec494b
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of Psy Shell.
Chris@0 5 *
Chris@0 6 * (c) 2012-2018 Justin Hileman
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Psy\Test\Sudo;
Chris@0 13
Chris@0 14 use PhpParser\NodeTraverser;
Chris@0 15 use Psy\Sudo\SudoVisitor;
Chris@0 16 use Psy\Test\ParserTestCase;
Chris@0 17
Chris@0 18 class SudoVisitorTest extends ParserTestCase
Chris@0 19 {
Chris@0 20 public function setUp()
Chris@0 21 {
Chris@0 22 $this->traverser = new NodeTraverser();
Chris@0 23 $this->traverser->addVisitor(new SudoVisitor());
Chris@0 24 }
Chris@0 25
Chris@0 26 /**
Chris@0 27 * @dataProvider propertyFetches
Chris@0 28 */
Chris@0 29 public function testPropertyFetch($from, $to)
Chris@0 30 {
Chris@0 31 $this->assertProcessesAs($from, $to);
Chris@0 32 }
Chris@0 33
Chris@0 34 public function propertyFetches()
Chris@0 35 {
Chris@0 36 return [
Chris@0 37 ['$a->b', "\Psy\Sudo::fetchProperty(\$a, 'b');"],
Chris@0 38 ['$a->$b', '\Psy\Sudo::fetchProperty($a, $b);'],
Chris@0 39 ["\$a->{'b'}", "\Psy\Sudo::fetchProperty(\$a, 'b');"],
Chris@0 40 ];
Chris@0 41 }
Chris@0 42
Chris@0 43 /**
Chris@0 44 * @dataProvider propertyAssigns
Chris@0 45 */
Chris@0 46 public function testPropertyAssign($from, $to)
Chris@0 47 {
Chris@0 48 $this->assertProcessesAs($from, $to);
Chris@0 49 }
Chris@0 50
Chris@0 51 public function propertyAssigns()
Chris@0 52 {
Chris@0 53 return [
Chris@0 54 ['$a->b = $c', "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"],
Chris@0 55 ['$a->$b = $c', '\Psy\Sudo::assignProperty($a, $b, $c);'],
Chris@0 56 ["\$a->{'b'} = \$c", "\Psy\Sudo::assignProperty(\$a, 'b', \$c);"],
Chris@0 57 ];
Chris@0 58 }
Chris@0 59
Chris@0 60 /**
Chris@0 61 * @dataProvider methodCalls
Chris@0 62 */
Chris@0 63 public function testMethodCall($from, $to)
Chris@0 64 {
Chris@0 65 $this->assertProcessesAs($from, $to);
Chris@0 66 }
Chris@0 67
Chris@0 68 public function methodCalls()
Chris@0 69 {
Chris@0 70 return [
Chris@0 71 ['$a->b()', "\Psy\Sudo::callMethod(\$a, 'b');"],
Chris@0 72 ['$a->$b()', '\Psy\Sudo::callMethod($a, $b);'],
Chris@0 73 ["\$a->b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, 'b', \$c, 'd');"],
Chris@0 74 ["\$a->\$b(\$c, 'd')", "\Psy\Sudo::callMethod(\$a, \$b, \$c, 'd');"],
Chris@0 75 ];
Chris@0 76 }
Chris@0 77
Chris@0 78 /**
Chris@0 79 * @dataProvider staticPropertyFetches
Chris@0 80 */
Chris@0 81 public function testStaticPropertyFetch($from, $to)
Chris@0 82 {
Chris@0 83 $this->assertProcessesAs($from, $to);
Chris@0 84 }
Chris@0 85
Chris@0 86 public function staticPropertyFetches()
Chris@0 87 {
Chris@0 88 return [
Chris@0 89 ['A::$b', "\Psy\Sudo::fetchStaticProperty('A', 'b');"],
Chris@0 90 ['$a::$b', "\Psy\Sudo::fetchStaticProperty(\$a, 'b');"],
Chris@0 91 ];
Chris@0 92 }
Chris@0 93
Chris@0 94 /**
Chris@0 95 * @dataProvider staticPropertyAssigns
Chris@0 96 */
Chris@0 97 public function testStaticPropertyAssign($from, $to)
Chris@0 98 {
Chris@0 99 $this->assertProcessesAs($from, $to);
Chris@0 100 }
Chris@0 101
Chris@0 102 public function staticPropertyAssigns()
Chris@0 103 {
Chris@0 104 return [
Chris@0 105 ['A::$b = $c', "\Psy\Sudo::assignStaticProperty('A', 'b', \$c);"],
Chris@0 106 ['$a::$b = $c', "\Psy\Sudo::assignStaticProperty(\$a, 'b', \$c);"],
Chris@0 107 ];
Chris@0 108 }
Chris@0 109
Chris@0 110 /**
Chris@0 111 * @dataProvider staticCalls
Chris@0 112 */
Chris@0 113 public function testStaticCall($from, $to)
Chris@0 114 {
Chris@0 115 $this->assertProcessesAs($from, $to);
Chris@0 116 }
Chris@0 117
Chris@0 118 public function staticCalls()
Chris@0 119 {
Chris@0 120 return [
Chris@0 121 ['A::b()', "\Psy\Sudo::callStatic('A', 'b');"],
Chris@0 122 ['A::$b()', "\Psy\Sudo::callStatic('A', \$b);"],
Chris@0 123 ["A::b(\$c, 'd')", "\Psy\Sudo::callStatic('A', 'b', \$c, 'd');"],
Chris@0 124 ["A::\$b(\$c, 'd')", "\Psy\Sudo::callStatic('A', \$b, \$c, 'd');"],
Chris@0 125 ];
Chris@0 126 }
Chris@0 127
Chris@0 128 /**
Chris@0 129 * @dataProvider classConstFetches
Chris@0 130 */
Chris@0 131 public function testClassConstFetch($from, $to)
Chris@0 132 {
Chris@0 133 $this->assertProcessesAs($from, $to);
Chris@0 134 }
Chris@0 135
Chris@0 136 public function classConstFetches()
Chris@0 137 {
Chris@0 138 return [
Chris@0 139 ['A::B', "\Psy\Sudo::fetchClassConst('A', 'B');"],
Chris@0 140 ];
Chris@0 141 }
Chris@0 142 }