/** * @dataProvider subScopeNodesProvider */ public function testWillNotEnterNodesLowerThanTheSubScopeNode(Node $subScopeNode) { /* @var $outerScopeNode Node */ $outerScopeNode = $this->getMock(Node::class); /* @var $innerScopeNode Node */ $innerScopeNode = $this->getMock(Node::class); $nodeReplacement1 = $this->getMock(Node::class); $nodeReplacement2 = $this->getMock(Node::class); $nodeReplacement3 = $this->getMock(Node::class); $nodeReplacement4 = $this->getMock(Node::class); $this->wrappedVisitor->expects(self::exactly(2))->method('enterNode')->with(self::logicalOr($outerScopeNode, $subScopeNode))->will($this->returnValueMap([[$outerScopeNode, $nodeReplacement1], [$subScopeNode, $nodeReplacement2]])); $this->wrappedVisitor->expects(self::exactly(2))->method('leaveNode')->with(self::logicalOr($outerScopeNode, $subScopeNode))->will($this->returnValueMap([[$outerScopeNode, $nodeReplacement3], [$subScopeNode, $nodeReplacement4]])); $this->assertSame($nodeReplacement1, $this->visitor->enterNode($outerScopeNode)); $this->assertSame($nodeReplacement2, $this->visitor->enterNode($subScopeNode)); $this->assertNull($this->visitor->enterNode($innerScopeNode)); $this->assertNull($this->visitor->leaveNode($innerScopeNode)); $this->assertSame($nodeReplacement4, $this->visitor->leaveNode($subScopeNode)); $this->assertSame($nodeReplacement3, $this->visitor->leaveNode($outerScopeNode)); }
public function afterTraverse(array $nodes) { return $this->wrappedVisitor->afterTraverse($nodes); }