/**
  * @dataProvider iterationProvider
  *
  * @param array $data
  */
 public function testIteration(array $data)
 {
     // should called once even multiple iteration
     $this->iterator->expects($this->once())->method('getData')->will($this->returnValue($data));
     $expectedKeys = array_keys($data);
     $expectedValues = array_values($data);
     foreach (range(1, 2) as $numberOfIteration) {
         $keys = $values = [];
         foreach ($this->iterator as $key => $value) {
             $keys[] = $key;
             $values[] = $value;
         }
         $this->assertSame($expectedKeys, $keys, 'Should return correct keys');
         $this->assertSame($expectedValues, $values, 'Should return correct values');
     }
     $this->assertSame($data, iterator_to_array($this->iterator), 'Should return correct data and do not call load');
     $this->assertCount(count($data), $this->iterator);
 }
 /**
  * {@inheritdoc}
  */
 public function current()
 {
     return (array) parent::current();
 }