FirstFindingVisitorTest.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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. {
  8. public function testFindFirstVariable() {
  9. $traverser = new NodeTraverser();
  10. $visitor = new FirstFindingVisitor(function(Node $node) {
  11. return $node instanceof Node\Expr\Variable;
  12. });
  13. $traverser->addVisitor($visitor);
  14. $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
  15. $stmts = [new Node\Stmt\Expression($assign)];
  16. $traverser->traverse($stmts);
  17. $this->assertSame($assign->var, $visitor->getFoundNode());
  18. }
  19. public function testFindNone() {
  20. $traverser = new NodeTraverser();
  21. $visitor = new FirstFindingVisitor(function(Node $node) {
  22. return $node instanceof Node\Expr\BinaryOp;
  23. });
  24. $traverser->addVisitor($visitor);
  25. $assign = new Expr\Assign(new Expr\Variable('a'), new Expr\Variable('b'));
  26. $stmts = [new Node\Stmt\Expression($assign)];
  27. $traverser->traverse($stmts);
  28. $this->assertNull($visitor->getFoundNode());
  29. }
  30. }