public function testValidPropertyPath()
{
$path = new PropertyPath('reference.traversable[index].property');
$this->assertEquals('reference', $path->getCurrent());
$this->assertTrue($path->hasNext());
$this->assertTrue($path->isProperty());
$this->assertFalse($path->isIndex());
$path->next();
$this->assertEquals('traversable', $path->getCurrent());
$this->assertTrue($path->hasNext());
$this->assertTrue($path->isProperty());
$this->assertFalse($path->isIndex());
$path->next();
$this->assertEquals('index', $path->getCurrent());
$this->assertTrue($path->hasNext());
$this->assertFalse($path->isProperty());
$this->assertTrue($path->isIndex());
$path->next();
$this->assertEquals('property', $path->getCurrent());
$this->assertFalse($path->hasNext());
$this->assertTrue($path->isProperty());
$this->assertFalse($path->isIndex());
}