/**
  * Tests using Data\DataSet in a foreach statement.
  *
  * @return  void
  *
  * @coversNothing  Integration test.
  * @since          1.0
  */
 public function test_foreach()
 {
     // Test multi-item list.
     $tests = array();
     foreach ($this->instance as $key => $object) {
         $tests[] = $object->mission;
     }
     $this->assertEquals(array(null, 'Vostok 1'), $tests);
     // Tests single item list.
     $this->instance->clear();
     $this->instance['1'] = new Data\DataObject();
     $runs = 0;
     foreach ($this->instance as $key => $object) {
         $runs++;
     }
     $this->assertEquals(1, $runs);
     // Exhaustively testing unsetting within a foreach.
     $this->instance['2'] = new Data\DataObject();
     $this->instance['3'] = new Data\DataObject();
     $this->instance['4'] = new Data\DataObject();
     $this->instance['5'] = new Data\DataObject();
     $runs = 0;
     foreach ($this->instance as $k => $v) {
         $runs++;
         if ($k != 3) {
             unset($this->instance[$k]);
         }
     }
     $this->assertFalse($this->instance->offsetExists(1), 'Index 1 should have been unset.');
     $this->assertFalse($this->instance->offsetExists(2), 'Index 2 should have been unset.');
     $this->assertTrue($this->instance->offsetExists(3), 'Index 3 should be set.');
     $this->assertFalse($this->instance->offsetExists(4), 'Index 4 should have been unset.');
     $this->assertFalse($this->instance->offsetExists(5), 'Index 5 should have been unset.');
     $this->assertCount(1, $this->instance);
     $this->assertEquals(5, $runs, 'Oops, the foreach ran too many times.');
 }