Chris@14
|
1 <?php
|
Chris@14
|
2 /*
|
Chris@14
|
3 * This file is part of object-reflector.
|
Chris@14
|
4 *
|
Chris@14
|
5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
|
Chris@14
|
6 *
|
Chris@14
|
7 * For the full copyright and license information, please view the LICENSE
|
Chris@14
|
8 * file that was distributed with this source code.
|
Chris@14
|
9 */
|
Chris@14
|
10
|
Chris@14
|
11 declare(strict_types=1);
|
Chris@14
|
12
|
Chris@14
|
13 namespace SebastianBergmann\ObjectReflector;
|
Chris@14
|
14
|
Chris@14
|
15 use PHPUnit\Framework\TestCase;
|
Chris@14
|
16 use SebastianBergmann\ObjectReflector\TestFixture\ChildClass;
|
Chris@14
|
17 use SebastianBergmann\ObjectReflector\TestFixture\ClassWithIntegerAttributeName;
|
Chris@14
|
18
|
Chris@14
|
19 /**
|
Chris@14
|
20 * @covers SebastianBergmann\ObjectReflector\ObjectReflector
|
Chris@14
|
21 */
|
Chris@14
|
22 class ObjectReflectorTest extends TestCase
|
Chris@14
|
23 {
|
Chris@14
|
24 /**
|
Chris@14
|
25 * @var ObjectReflector
|
Chris@14
|
26 */
|
Chris@14
|
27 private $objectReflector;
|
Chris@14
|
28
|
Chris@14
|
29 protected function setUp()/*: void */
|
Chris@14
|
30 {
|
Chris@14
|
31 $this->objectReflector = new ObjectReflector;
|
Chris@14
|
32 }
|
Chris@14
|
33
|
Chris@14
|
34 public function testReflectsAttributesOfObject()/*: void */
|
Chris@14
|
35 {
|
Chris@14
|
36 $o = new ChildClass;
|
Chris@14
|
37
|
Chris@14
|
38 $this->assertEquals(
|
Chris@14
|
39 [
|
Chris@14
|
40 'privateInChild' => 'private',
|
Chris@14
|
41 'protectedInChild' => 'protected',
|
Chris@14
|
42 'publicInChild' => 'public',
|
Chris@14
|
43 'undeclared' => 'undeclared',
|
Chris@14
|
44 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::privateInParent' => 'private',
|
Chris@14
|
45 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::protectedInParent' => 'protected',
|
Chris@14
|
46 'SebastianBergmann\ObjectReflector\TestFixture\ParentClass::publicInParent' => 'public',
|
Chris@14
|
47 ],
|
Chris@14
|
48 $this->objectReflector->getAttributes($o)
|
Chris@14
|
49 );
|
Chris@14
|
50 }
|
Chris@14
|
51
|
Chris@14
|
52 public function testReflectsAttributeWithIntegerName()/*: void */
|
Chris@14
|
53 {
|
Chris@14
|
54 $o = new ClassWithIntegerAttributeName;
|
Chris@14
|
55
|
Chris@14
|
56 $this->assertEquals(
|
Chris@14
|
57 [
|
Chris@14
|
58 1 => 2
|
Chris@14
|
59 ],
|
Chris@14
|
60 $this->objectReflector->getAttributes($o)
|
Chris@14
|
61 );
|
Chris@14
|
62 }
|
Chris@14
|
63
|
Chris@14
|
64 public function testRaisesExceptionWhenPassedArgumentIsNotAnObject()/*: void */
|
Chris@14
|
65 {
|
Chris@14
|
66 $this->expectException(InvalidArgumentException::class);
|
Chris@14
|
67
|
Chris@14
|
68 $this->objectReflector->getAttributes(null);
|
Chris@14
|
69 }
|
Chris@14
|
70 }
|