public function testArrayAccessTraversalMethods()
{
$collection = new Collection(array('data' => array('foo', 'bar', 'baz' => 'dib')));
$this->assertEqual('foo', $collection->current());
$this->assertEqual('bar', $collection->next());
$this->assertEqual('foo', $collection->prev());
$this->assertEqual('bar', $collection->next());
$this->assertEqual('dib', $collection->next());
$this->assertEqual('baz', $collection->key());
$this->assertTrue($collection->valid());
$this->assertFalse($collection->next());
$this->assertFalse($collection->valid());
$this->assertEqual('foo', $collection->rewind());
$this->assertTrue($collection->valid());
$this->assertEqual('dib', $collection->prev());
$this->assertTrue($collection->valid());
$this->assertEqual('bar', $collection->prev());
$this->assertTrue($collection->valid());
$this->assertEqual('dib', $collection->end());
$this->assertTrue($collection->valid());
$collection = new Collection(array('data' => array(0, 1, 2, 3, 4)));
$this->assertIdentical(0, $collection->first());
$this->assertIdentical(0, $collection->rewind());
$this->assertIdentical(1, $collection->next());
$this->assertIdentical(2, $collection->next());
$this->assertIdentical(3, $collection->next());
$this->assertIdentical(2, $collection->prev());
$this->assertIdentical(2, $collection->current());
$this->assertIdentical(3, $collection->next());
$this->assertIdentical(4, $collection->next());
$this->assertIdentical(3, $collection->prev());
$this->assertIdentical(4, $collection->next());
$this->assertTrue($collection->valid());
$this->assertFalse($collection->next());
$this->assertFalse($collection->valid());
$this->assertFalse($collection->current());
$this->assertIdentical(4, $collection->prev());
$this->assertTrue($collection->valid());
}