Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / vendor / nikic / php-parser / test / PhpParser / NodeAbstractTest.php
index 7fd0a39c7cc8985ebec409735bdd3d888cb1e077..c8c785db6591de28f773ee1af50550310fb01799 100644 (file)
@@ -1,8 +1,11 @@
-<?php
+<?php declare(strict_types=1);
 
 namespace PhpParser;
 
-class DummyNode extends NodeAbstract {
+use PHPUnit\Framework\TestCase;
+
+class DummyNode extends NodeAbstract
+{
     public $subNode1;
     public $subNode2;
 
@@ -12,33 +15,38 @@ class DummyNode extends NodeAbstract {
         $this->subNode2 = $subNode2;
     }
 
-    public function getSubNodeNames() {
-        return array('subNode1', 'subNode2');
+    public function getSubNodeNames() : array {
+        return ['subNode1', 'subNode2'];
     }
 
     // This method is only overwritten because the node is located in an unusual namespace
-    public function getType() {
+    public function getType() : string {
         return 'Dummy';
     }
 }
 
-class NodeAbstractTest extends \PHPUnit_Framework_TestCase
+class NodeAbstractTest extends TestCase
 {
     public function provideNodes() {
-        $attributes = array(
+        $attributes = [
             'startLine' => 10,
-            'comments'  => array(
+            'endLine' => 11,
+            'startTokenPos' => 12,
+            'endTokenPos' => 13,
+            'startFilePos' => 14,
+            'endFilePos' => 15,
+            'comments'  => [
                 new Comment('// Comment' . "\n"),
                 new Comment\Doc('/** doc comment */'),
-            ),
-        );
+            ],
+        ];
 
         $node = new DummyNode('value1', 'value2', $attributes);
         $node->notSubNode = 'value3';
 
-        return array(
-            array($attributes, $node),
-        );
+        return [
+            [$attributes, $node],
+        ];
     }
 
     /**
@@ -46,15 +54,22 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
      */
     public function testConstruct(array $attributes, Node $node) {
         $this->assertSame('Dummy', $node->getType());
-        $this->assertSame(array('subNode1', 'subNode2'), $node->getSubNodeNames());
+        $this->assertSame(['subNode1', 'subNode2'], $node->getSubNodeNames());
         $this->assertSame(10, $node->getLine());
+        $this->assertSame(10, $node->getStartLine());
+        $this->assertSame(11, $node->getEndLine());
+        $this->assertSame(12, $node->getStartTokenPos());
+        $this->assertSame(13, $node->getEndTokenPos());
+        $this->assertSame(14, $node->getStartFilePos());
+        $this->assertSame(15, $node->getEndFilePos());
         $this->assertSame('/** doc comment */', $node->getDocComment()->getText());
         $this->assertSame('value1', $node->subNode1);
         $this->assertSame('value2', $node->subNode2);
-        $this->assertTrue(isset($node->subNode1));
-        $this->assertTrue(isset($node->subNode2));
-        $this->assertFalse(isset($node->subNode3));
+        $this->assertObjectHasAttribute('subNode1', $node);
+        $this->assertObjectHasAttribute('subNode2', $node);
+        $this->assertObjectNotHasAttribute('subNode3', $node);
         $this->assertSame($attributes, $node->getAttributes());
+        $this->assertSame($attributes['comments'], $node->getComments());
 
         return $node;
     }
@@ -64,9 +79,14 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetDocComment(array $attributes, Node $node) {
         $this->assertSame('/** doc comment */', $node->getDocComment()->getText());
-        array_pop($node->getAttribute('comments')); // remove doc comment
+        $comments = $node->getComments();
+
+        array_pop($comments); // remove doc comment
+        $node->setAttribute('comments', $comments);
         $this->assertNull($node->getDocComment());
-        array_pop($node->getAttribute('comments')); // remove comment
+
+        array_pop($comments); // remove comment
+        $node->setAttribute('comments', $comments);
         $this->assertNull($node->getDocComment());
     }
 
@@ -96,10 +116,6 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
      * @dataProvider provideNodes
      */
     public function testChange(array $attributes, Node $node) {
-        // change of line
-        $node->setLine(15);
-        $this->assertSame(15, $node->getLine());
-
         // direct modification
         $node->subNode = 'newValue';
         $this->assertSame('newValue', $node->subNode);
@@ -111,7 +127,7 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
 
         // removal
         unset($node->subNode);
-        $this->assertFalse(isset($node->subNode));
+        $this->assertObjectNotHasAttribute('subNode', $node);
     }
 
     /**
@@ -125,10 +141,10 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
             if ($i === 0) {
                 $this->assertSame('subNode1', $key);
                 $this->assertSame('value1', $value);
-            } else if ($i === 1) {
+            } elseif ($i === 1) {
                 $this->assertSame('subNode2', $key);
                 $this->assertSame('value2', $value);
-            } else if ($i === 2) {
+            } elseif ($i === 2) {
                 $this->assertSame('notSubNode', $key);
                 $this->assertSame('value3', $value);
             } else {
@@ -141,7 +157,7 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
 
     public function testAttributes() {
         /** @var $node Node */
-        $node = $this->getMockForAbstractClass('PhpParser\NodeAbstract');
+        $node = $this->getMockForAbstractClass(NodeAbstract::class);
 
         $this->assertEmpty($node->getAttributes());
 
@@ -159,10 +175,24 @@ class NodeAbstractTest extends \PHPUnit_Framework_TestCase
         $this->assertNull($node->getAttribute('null', 'default'));
 
         $this->assertSame(
-            array(
+            [
                 'key'  => 'value',
                 'null' => null,
-            ),
+            ],
+            $node->getAttributes()
+        );
+
+        $node->setAttributes(
+            [
+                'a' => 'b',
+                'c' => null,
+            ]
+        );
+        $this->assertSame(
+            [
+                'a' => 'b',
+                'c' => null,
+            ],
             $node->getAttributes()
         );
     }
@@ -181,14 +211,28 @@ PHP;
     {
         "nodeType": "Stmt_Function",
         "byRef": false,
-        "name": "functionName",
+        "name": {
+            "nodeType": "Identifier",
+            "name": "functionName",
+            "attributes": {
+                "startLine": 4,
+                "endLine": 4
+            }
+        },
         "params": [
             {
                 "nodeType": "Param",
                 "type": null,
                 "byRef": true,
                 "variadic": false,
-                "name": "a",
+                "var": {
+                    "nodeType": "Expr_Variable",
+                    "name": "a",
+                    "attributes": {
+                        "startLine": 4,
+                        "endLine": 4
+                    }
+                },
                 "default": {
                     "nodeType": "Scalar_LNumber",
                     "value": 0,
@@ -208,7 +252,14 @@ PHP;
                 "type": null,
                 "byRef": false,
                 "variadic": false,
-                "name": "b",
+                "var": {
+                    "nodeType": "Expr_Variable",
+                    "name": "b",
+                    "attributes": {
+                        "startLine": 4,
+                        "endLine": 4
+                    }
+                },
                 "default": {
                     "nodeType": "Scalar_DNumber",
                     "value": 1,
@@ -251,13 +302,15 @@ PHP;
                     "nodeType": "Comment",
                     "text": "\/\/ comment\n",
                     "line": 2,
-                    "filePos": 6
+                    "filePos": 6,
+                    "tokenPos": 1
                 },
                 {
                     "nodeType": "Comment_Doc",
                     "text": "\/** doc comment *\/",
                     "line": 3,
-                    "filePos": 17
+                    "filePos": 17,
+                    "tokenPos": 2
                 }
             ],
             "endLine": 6