PluginProbe ʕ •ᴥ•ʔ
Presto Player / 4.3.3
Presto Player v4.3.3
4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 1.5.14 1.5.15 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 1.6.10 1.6.11 1.6.12 1.6.13 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.9.0 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.14 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.2.0 2.2.1 2.2.2 2.2.3 2.2.3-beta1 2.3.0 2.3.1 2.3.2 2.3.3 3.0.0 3.0.0-beta1 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.1.0 3.1.1 3.1.2 3.1.3 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.0.8 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4
presto-player / vendor / level-2 / dice / tests / ConstructParamsTest.php
presto-player / vendor / level-2 / dice / tests Last commit date
TestData 2 years ago BasicTest.php 5 years ago CallTest.php 5 years ago ChainTest.php 5 years ago ConstructParamsTest.php 5 years ago CreateArgsTest.php 5 years ago DiceTest.php 5 years ago NamedInstancesTest.php 5 years ago NamespaceTest.php 5 years ago ShareInstancesTest.php 2 years ago SubstitutionsTest.php 5 years ago bootstrap.php 5 years ago
ConstructParamsTest.php
141 lines
1 <?php
2 /* @description Dice - A minimal Dependency Injection Container for PHP *
3 * @author Tom Butler tom@r.je *
4 * @copyright 2012-2018 Tom Butler <tom@r.je> | https:// r.je/dice.html *
5 * @license http:// www.opensource.org/licenses/bsd-license.php BSD License *
6 * @version 3.0 */
7 class ConstructParamsTest extends DiceTest {
8
9 public function testConstructParams() {
10 $rule = [];
11 $rule['constructParams'] = array('foo', 'bar');
12 $dice = $this->dice->addRule('RequiresConstructorArgsA', $rule);
13
14 $obj = $dice->create('RequiresConstructorArgsA');
15
16 $this->assertEquals($obj->foo, 'foo');
17 $this->assertEquals($obj->bar, 'bar');
18 }
19
20
21 public function testInternalClass() {
22 $rule = [];
23 $rule['constructParams'][] = '.';
24
25 $dice = $this->dice->addRule('DirectoryIterator', $rule);
26
27 $dir = $dice->create('DirectoryIterator');
28
29 $this->assertInstanceOf('DirectoryIterator', $dir);
30 }
31
32 public function testInternalClassExtended() {
33 $rule = [];
34 $rule['constructParams'][] = '.';
35
36 $dice = $this->dice->addRule('MyDirectoryIterator', $rule);
37
38 $dir = $dice->create('MyDirectoryIterator');
39
40 $this->assertInstanceOf('MyDirectoryIterator', $dir);
41 }
42
43
44 public function testInternalClassExtendedConstructor() {
45 $rule = [];
46 $rule['constructParams'][] = '.';
47
48 $dice = $this->dice->addRule('MyDirectoryIterator2', $rule);
49
50 $dir = $dice->create('MyDirectoryIterator2');
51
52 $this->assertInstanceOf('MyDirectoryIterator2', $dir);
53 }
54
55 public function testDefaultNullAssigned() {
56 $rule = [];
57 $rule['constructParams'] = [ [\Dice\Dice::INSTANCE => 'A'], null];
58 $dice = $this->dice->addRule('MethodWithDefaultNull', $rule);
59 $obj = $dice->create('MethodWithDefaultNull');
60 $this->assertNull($obj->b);
61 }
62
63 public function testConstructParamsNested() {
64 $rule = [];
65 $rule['constructParams'] = array('foo', 'bar');
66 $dice = $this->dice->addRule('RequiresConstructorArgsA', $rule);
67
68 $rule = [];
69 $rule['shareInstances'] = array('D');
70 $dice = $dice->addRule('ParamRequiresArgs', $rule);
71
72 $obj = $dice->create('ParamRequiresArgs');
73
74 $this->assertEquals($obj->a->foo, 'foo');
75 $this->assertEquals($obj->a->bar, 'bar');
76 }
77
78
79 public function testConstructParamsMixed() {
80 $rule = [];
81 $rule['constructParams'] = array('foo', 'bar');
82 $dice = $this->dice->addRule('RequiresConstructorArgsB', $rule);
83
84 $obj = $dice->create('RequiresConstructorArgsB');
85
86 $this->assertEquals($obj->foo, 'foo');
87 $this->assertEquals($obj->bar, 'bar');
88 $this->assertInstanceOf('A', $obj->a);
89 }
90
91
92 public function testSharedClassWithTraitExtendsInternalClass() {
93 $rule = [];
94 $rule['constructParams'] = ['.'];
95
96 $dice = $this->dice->addRule('MyDirectoryIteratorWithTrait', $rule);
97
98 $dir = $dice->create('MyDirectoryIteratorWithTrait');
99
100 $this->assertInstanceOf('MyDirectoryIteratorWithTrait', $dir);
101 }
102
103 public function testConstructParamsPrecedence() {
104 $rule = [];
105 $rule['constructParams'] = ['A', 'B'];
106 $dice = $this->dice->addRule('RequiresConstructorArgsA', $rule);
107
108 $a1 = $dice->create('RequiresConstructorArgsA');
109 $this->assertEquals('A', $a1->foo);
110 $this->assertEquals('B', $a1->bar);
111
112 $a2 = $dice->create('RequiresConstructorArgsA', ['C', 'D']);
113 $this->assertEquals('C', $a2->foo);
114 $this->assertEquals('D', $a2->bar);
115 }
116
117 public function testNullScalar() {
118 $rule = [];
119 $rule['constructParams'] = [null];
120 $dice = $this->dice->addRule('NullScalar', $rule);
121
122 $obj = $dice->create('NullScalar');
123 $this->assertEquals(null, $obj->string);
124 }
125
126 public function testNullScalarNested() {
127 $rule = [];
128 $rule['constructParams'] = [null];
129 $dice = $this->dice->addRule('NullScalar', $rule);
130
131 $obj = $dice->create('NullScalarNested');
132 $this->assertEquals(null, $obj->nullScalar->string);
133 }
134
135 public function testNullableClassTypeHint() {
136 $nullableClassTypeHint = $this->dice->create('NullableClassTypeHint');
137
138 $this->assertEquals(null, $nullableClassTypeHint->obj);
139 }
140
141 }