public function testCounterKeySelectorIsAutomaticallySetForChildren()
 {
     $child1 = $this->treeBuilder->leaf();
     $child2 = $this->treeBuilder->tree();
     $child3 = $this->treeBuilder->each();
     $keys = array($child1->buildKey(''), $child2->buildKey(''), $child3->buildKey(''));
     $this->assertInstanceOf('\\TreeBuilder\\NoKey', $keys[0]);
     $this->assertInstanceOf('\\TreeBuilder\\NoKey', $keys[1]);
     $this->assertInstanceOf('\\TreeBuilder\\NoKey', $keys[2]);
 }
 public function testBuildValue()
 {
     $identity = function ($element) {
         return $element;
     };
     $name = function ($element) {
         return $element['name'];
     };
     $child1 = $this->mockedNode($identity, $name);
     $child2 = $this->mockedNode($identity, $name);
     $child1->key(function ($element) {
         return (int) $element['id'];
     });
     $child2->key(function ($element) {
         return (int) $element['id'] + 10;
     });
     $this->treeBuilder->addChild($child1)->addChild($child2);
     $element = array('baseKey' => array(array('id' => '1', 'name' => 'John'), array('id' => '2', 'name' => 'Kate'), array('id' => '3', 'name' => 'William')));
     $expected = array(1 => 'John', 2 => 'Kate', 3 => 'William', 11 => 'John', 12 => 'Kate', 13 => 'William');
     $this->assertEquals($expected, $this->treeBuilder->buildValue($element));
 }