/**
  * @covers \PHP\Manipulator\TokenContainer\Iterator
  */
 public function testIterator()
 {
     $container = $this->getTestContainerWithHoles();
     $iterator = new Iterator($container);
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[2], $iterator->current());
     $this->assertEquals(2, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[4], $iterator->current());
     $this->assertEquals(4, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[5], $iterator->current());
     $this->assertEquals(5, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[6], $iterator->current());
     $this->assertEquals(6, $iterator->key(), 'Wrong key');
     $iterator->next();
     $this->assertFalse($iterator->valid());
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[6], $iterator->current());
     $this->assertEquals(6, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[5], $iterator->current());
     $this->assertEquals(5, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[4], $iterator->current());
     $this->assertEquals(4, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[2], $iterator->current());
     $this->assertEquals(2, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
     $iterator->previous();
     $this->assertFalse($iterator->valid());
     $iterator->rewind();
     $this->assertTrue($iterator->valid());
     $this->assertSame($container[0], $iterator->current());
     $this->assertEquals(0, $iterator->key(), 'Wrong key');
 }