* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\PropertyAccess\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\PropertyAccess\PropertyPath; class PropertyPathTest extends TestCase { public function testToString() { $path = new PropertyPath('reference.traversable[index].property'); $this->assertEquals('reference.traversable[index].property', $path->__toString()); } /** * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException */ public function testDotIsRequiredBeforeProperty() { new PropertyPath('[index]property'); } /** * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException */ public function testDotCannotBePresentAtTheBeginning() { new PropertyPath('.property'); } public function providePathsContainingUnexpectedCharacters() { return array( array('property.'), array('property.['), array('property..'), array('property['), array('property[['), array('property[.'), array('property[]'), ); } /** * @dataProvider providePathsContainingUnexpectedCharacters * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException */ public function testUnexpectedCharacters($path) { new PropertyPath($path); } /** * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidPropertyPathException */ public function testPathCannotBeEmpty() { new PropertyPath(''); } /** * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidArgumentException */ public function testPathCannotBeNull() { new PropertyPath(null); } /** * @expectedException \Symfony\Component\PropertyAccess\Exception\InvalidArgumentException */ public function testPathCannotBeFalse() { new PropertyPath(false); } public function testZeroIsValidPropertyPath() { $propertyPath = new PropertyPath('0'); $this->assertSame('0', (string) $propertyPath); } public function testGetParentWithDot() { $propertyPath = new PropertyPath('grandpa.parent.child'); $this->assertEquals(new PropertyPath('grandpa.parent'), $propertyPath->getParent()); } public function testGetParentWithIndex() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $this->assertEquals(new PropertyPath('grandpa.parent'), $propertyPath->getParent()); } public function testGetParentWhenThereIsNoParent() { $propertyPath = new PropertyPath('path'); $this->assertNull($propertyPath->getParent()); } public function testCopyConstructor() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $copy = new PropertyPath($propertyPath); $this->assertEquals($propertyPath, $copy); } public function testGetElement() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $this->assertEquals('child', $propertyPath->getElement(2)); } /** * @expectedException \OutOfBoundsException */ public function testGetElementDoesNotAcceptInvalidIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->getElement(3); } /** * @expectedException \OutOfBoundsException */ public function testGetElementDoesNotAcceptNegativeIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->getElement(-1); } public function testIsProperty() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $this->assertTrue($propertyPath->isProperty(1)); $this->assertFalse($propertyPath->isProperty(2)); } /** * @expectedException \OutOfBoundsException */ public function testIsPropertyDoesNotAcceptInvalidIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->isProperty(3); } /** * @expectedException \OutOfBoundsException */ public function testIsPropertyDoesNotAcceptNegativeIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->isProperty(-1); } public function testIsIndex() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $this->assertFalse($propertyPath->isIndex(1)); $this->assertTrue($propertyPath->isIndex(2)); } /** * @expectedException \OutOfBoundsException */ public function testIsIndexDoesNotAcceptInvalidIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->isIndex(3); } /** * @expectedException \OutOfBoundsException */ public function testIsIndexDoesNotAcceptNegativeIndices() { $propertyPath = new PropertyPath('grandpa.parent[child]'); $propertyPath->isIndex(-1); } } __halt_compiler();----SIGNATURE:----f36ECz8THR7ZMlGc0bEC+Rn7mEhEVLdzLoZgdbDa1fCkf6FsB8VcUNQg6oks8GKwCjfFaVhKq2ABPv39LpurmjLhbOE6Nu49h6H6cMhtOESrcZJvylhHPm1hnC9x2vqwzyf/q2jXDcAvfk1204UQ/0d10Nj5pM/g4vSa2L8XRjmzCrmJuCJ8KhtMY1oI3gOsIZgW0hZ6xv2anh1SSsyCMIc1yKymEbyRhMsBDIMxQd0vBtJAcsTRh/ocRX34j36c9lyo2xP3+WPDjEJmC/Nwk6abRB16Y0zlLadFLdibIP/h6zKrntojsKnt7wxeDBF9GUjL6J36C4gVnaA2SLkNJi7P/zR6P19hsivcJKwsITK0NxI8rUQHTi4NFOLGDJchxoOE2/ODrbxyTfF4hH70jhmQ+33M356/2yHaKrTxJxuRWbRxnlIg+7PttYvbs1vozQ+S9t35SMRFvThDxbd7LRR+G2LcbcxTveMu629TGSmWIrAnDc83Qv07Q4q6mKIEO3knP++TV9AnLEL/s3hE7oyaE/mRMqDsNcp+uK+ZPH2CEZ2L2yYuLWMZLknFJOe8B3w8wf3cTDGvfGjjn7cfBB2mrTqCTxDg6txY3wO239wCLG1ooXe2if4kCPuq1eyzNmZ0H/pokAy8S0lXrfhEgHqkiA3odBiuCwWbkcKZfCo=----ATTACHMENT:----MTA5NjI3ODAzNDk2ODk1MiA4Njc1NDg0MjQxNDcxMjU4IDY5MjA3MjI3MzMzNTY2MTI=