Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: Chris@14: declare(strict_types=1); Chris@14: Chris@14: namespace SebastianBergmann\ObjectReflector; Chris@14: Chris@14: use PHPUnit\Framework\TestCase; Chris@14: use SebastianBergmann\ObjectReflector\TestFixture\ChildClass; Chris@14: use SebastianBergmann\ObjectReflector\TestFixture\ClassWithIntegerAttributeName; Chris@14: Chris@14: /** Chris@14: * @covers SebastianBergmann\ObjectReflector\ObjectReflector Chris@14: */ Chris@14: class ObjectReflectorTest extends TestCase Chris@14: { Chris@14: /** Chris@14: * @var ObjectReflector Chris@14: */ Chris@14: private $objectReflector; Chris@14: Chris@14: protected function setUp()/*: void */ Chris@14: { Chris@14: $this->objectReflector = new ObjectReflector; Chris@14: } Chris@14: Chris@14: public function testReflectsAttributesOfObject()/*: void */ Chris@14: { Chris@14: $o = new ChildClass; Chris@14: Chris@14: $this->assertEquals( Chris@14: [ Chris@14: 'privateInChild' => 'private', Chris@14: 'protectedInChild' => 'protected', Chris@14: 'publicInChild' => 'public', Chris@14: 'undeclared' => 'undeclared', Chris@14: 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::privateInParent' => 'private', Chris@14: 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::protectedInParent' => 'protected', Chris@14: 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::publicInParent' => 'public', Chris@14: ], Chris@14: $this->objectReflector->getAttributes($o) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function testReflectsAttributeWithIntegerName()/*: void */ Chris@14: { Chris@14: $o = new ClassWithIntegerAttributeName; Chris@14: Chris@14: $this->assertEquals( Chris@14: [ Chris@14: 1 => 2 Chris@14: ], Chris@14: $this->objectReflector->getAttributes($o) Chris@14: ); Chris@14: } Chris@14: Chris@14: public function testRaisesExceptionWhenPassedArgumentIsNotAnObject()/*: void */ Chris@14: { Chris@14: $this->expectException(InvalidArgumentException::class); Chris@14: Chris@14: $this->objectReflector->getAttributes(null); Chris@14: } Chris@14: }