/** * 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.'); }