Chris@13: var, $assign->expr->left, $assign->expr->right]; Chris@13: return [$stmts, $vars]; Chris@13: } Chris@13: Chris@13: public function testFind() { Chris@13: $finder = new NodeFinder; Chris@13: list($stmts, $vars) = $this->getStmtsAndVars(); Chris@13: $varFilter = function(Node $node) { Chris@13: return $node instanceof Expr\Variable; Chris@13: }; Chris@13: $this->assertSame($vars, $finder->find($stmts, $varFilter)); Chris@13: $this->assertSame($vars, $finder->find($stmts[0], $varFilter)); Chris@13: Chris@13: $noneFilter = function () { return false; }; Chris@13: $this->assertSame([], $finder->find($stmts, $noneFilter)); Chris@13: } Chris@13: Chris@13: public function testFindInstanceOf() { Chris@13: $finder = new NodeFinder; Chris@13: list($stmts, $vars) = $this->getStmtsAndVars(); Chris@13: $this->assertSame($vars, $finder->findInstanceOf($stmts, Expr\Variable::class)); Chris@13: $this->assertSame($vars, $finder->findInstanceOf($stmts[0], Expr\Variable::class)); Chris@13: $this->assertSame([], $finder->findInstanceOf($stmts, Expr\BinaryOp\Mul::class)); Chris@13: } Chris@13: Chris@13: public function testFindFirst() { Chris@13: $finder = new NodeFinder; Chris@13: list($stmts, $vars) = $this->getStmtsAndVars(); Chris@13: $varFilter = function(Node $node) { Chris@13: return $node instanceof Expr\Variable; Chris@13: }; Chris@13: $this->assertSame($vars[0], $finder->findFirst($stmts, $varFilter)); Chris@13: $this->assertSame($vars[0], $finder->findFirst($stmts[0], $varFilter)); Chris@13: Chris@13: $noneFilter = function () { return false; }; Chris@13: $this->assertNull($finder->findFirst($stmts, $noneFilter)); Chris@13: } Chris@13: Chris@13: public function testFindFirstInstanceOf() { Chris@13: $finder = new NodeFinder; Chris@13: list($stmts, $vars) = $this->getStmtsAndVars(); Chris@13: $this->assertSame($vars[0], $finder->findFirstInstanceOf($stmts, Expr\Variable::class)); Chris@13: $this->assertSame($vars[0], $finder->findFirstInstanceOf($stmts[0], Expr\Variable::class)); Chris@13: $this->assertNull($finder->findFirstInstanceOf($stmts, Expr\BinaryOp\Mul::class)); Chris@13: } Chris@13: }