public function testVisit() { $this->tree->add(new Variant('child1'), 'default'); $this->tree->add(new Variant('child2'), 'default'); $this->tree->add(new Variant('child1-1'), 'child1'); $this->tree->add(new Variant('child1-2'), 'child1'); // name-level mapping $expectedVisit = array('default' => 0, 'child1' => 1, 'child2' => 1, 'child1-1' => 2, 'child1-2' => 2); $visitedNodes = array(); $this->tree->visit(function (VariantNode $node, $level) use(&$visitedNodes) { $visitedNodes[$node->getContent()->getName()] = $level; }); $this->assertEquals($expectedVisit, $visitedNodes); }