FirstFindingVisitorTest.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php declare(strict_types=1);
  2. namespace PhpParser\NodeVisitor;
  3. use PhpParser\Node;
  4. use PhpParser\Node\Expr;
  5. use PhpParser\NodeTraverser;
  6. class FirstFindingVisitorTest extends \PHPUnit\Framework\TestCase {
  7. public function testFindFirstVariable(): void {
  8. $traverser = new NodeTraverser();
  9. $visitor = new FirstFindingVisitor(function (Node $node) {
  10. return $node instanceof Node\Expr\Variable;
  11. });
  12. $traverser->addVisitor($visitor);
  13. $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
  14. $stmts = [new Node\Stmt\Expression($assign)];
  15. $traverser->traverse($stmts);
  16. $this->assertSame($assign->var, $visitor->getFoundNode());
  17. }
  18. public function testFindNone(): void {
  19. $traverser = new NodeTraverser();
  20. $visitor = new FirstFindingVisitor(function (Node $node) {
  21. return $node instanceof Node\Expr\BinaryOp;
  22. });
  23. $traverser->addVisitor($visitor);
  24. $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
  25. $stmts = [new Node\Stmt\Expression($assign)];
  26. $traverser->traverse($stmts);
  27. $this->assertNull($visitor->getFoundNode());
  28. }
  29. }