public function testBuildValue()
 {
     $child1 = $this->mockedNode(function ($element) {
         return $element['key1'];
     });
     $child2 = $this->mockedNode(function ($element) {
         return $element['key2'];
     });
     $child3 = $this->mockedNode(function ($element) {
         return $element['key1'];
     });
     $child1->key(function () {
         return 'index1';
     });
     $child2->key(function () {
         return 'index2';
     });
     $child3->key(function () {
         return 'index3';
     });
     $this->treeBuilder->addChild($child1)->addChild($child2)->addChild($child3);
     $element = array('baseKey' => array('key1' => 'value1', 'key2' => 'value2'));
     $expected = array('index1' => 'value1', 'index2' => 'value2', 'index3' => 'value1');
     $this->assertEquals($expected, $this->treeBuilder->buildValue($element));
 }
 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));
 }