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