forked from codeigniter4/CodeIgniter4
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathReflectionHelperTest.php
More file actions
118 lines (104 loc) · 2.87 KB
/
Copy pathReflectionHelperTest.php
File metadata and controls
118 lines (104 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
/**
* This file is part of CodeIgniter 4 framework.
*
* (c) CodeIgniter Foundation <admin@codeigniter.com>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/
namespace CodeIgniter\Test;
/**
* @internal
*
* @group Others
*/
final class ReflectionHelperTest extends CIUnitTestCase
{
public function testGetPrivatePropertyWithObject()
{
$obj = new __TestForReflectionHelper();
$actual = $this->getPrivateProperty($obj, 'private');
$this->assertSame('secret', $actual);
}
public function testGetPrivatePropertyWithObjectStaticCall()
{
$obj = new __TestForReflectionHelper();
$actual = CIUnitTestCase::getPrivateProperty($obj, 'private');
$this->assertSame('secret', $actual);
}
public function testGetPrivatePropertyWithStatic()
{
$actual = $this->getPrivateProperty(
__TestForReflectionHelper::class,
'static_private'
);
$this->assertSame('xyz', $actual);
}
public function testSetPrivatePropertyWithObject()
{
$obj = new __TestForReflectionHelper();
$this->setPrivateProperty(
$obj,
'private',
'open'
);
$this->assertSame('open', $obj->getPrivate());
}
public function testSetPrivatePropertyWithStatic()
{
$this->setPrivateProperty(
__TestForReflectionHelper::class,
'static_private',
'abc'
);
$this->assertSame(
'abc',
__TestForReflectionHelper::getStaticPrivate()
);
}
public function testGetPrivateMethodInvokerWithObject()
{
$obj = new __TestForReflectionHelper();
$method = $this->getPrivateMethodInvoker(
$obj,
'privateMethod'
);
$this->assertSame(
'private param1param2',
$method('param1', 'param2')
);
}
public function testGetPrivateMethodInvokerWithStatic()
{
$method = $this->getPrivateMethodInvoker(
__TestForReflectionHelper::class,
'privateStaticMethod'
);
$this->assertSame(
'private_static param1param2',
$method('param1', 'param2')
);
}
}
class __TestForReflectionHelper
{
private string $private = 'secret';
private static string $static_private = 'xyz';
public function getPrivate()
{
return $this->private;
}
public static function getStaticPrivate()
{
return self::$static_private;
}
private function privateMethod($param1, $param2)
{
return 'private ' . $param1 . $param2;
}
private static function privateStaticMethod($param1, $param2)
{
return 'private_static ' . $param1 . $param2;
}
}