NodeConnectingVisitorTest.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. <?php declare(strict_types=1);
  2. namespace PhpParser\NodeVisitor;
  3. use PhpParser\Node\Expr\ConstFetch;
  4. use PhpParser\Node\Stmt\Else_;
  5. use PhpParser\Node\Stmt\If_;
  6. use PhpParser\NodeFinder;
  7. use PhpParser\NodeTraverser;
  8. use PhpParser\ParserFactory;
  9. final class NodeConnectingVisitorTest extends \PHPUnit\Framework\TestCase
  10. {
  11. public function testConnectsNodeToItsParentNodeAndItsSiblingNodes()
  12. {
  13. $ast = (new ParserFactory)->create(ParserFactory::PREFER_PHP7)->parse(
  14. '<?php if (true) {} else {}'
  15. );
  16. $traverser = new NodeTraverser;
  17. $traverser->addVisitor(new NodeConnectingVisitor);
  18. $ast = $traverser->traverse($ast);
  19. $node = (new NodeFinder)->findFirstInstanceof($ast, Else_::class);
  20. $this->assertSame(If_::class, get_class($node->getAttribute('parent')));
  21. $this->assertSame(ConstFetch::class, get_class($node->getAttribute('previous')));
  22. $node = (new NodeFinder)->findFirstInstanceof($ast, ConstFetch::class);
  23. $this->assertSame(Else_::class, get_class($node->getAttribute('next')));
  24. }
  25. }