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 / NamedInstancesTest.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
NamedInstancesTest.php
142 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 NamedInstancesTest extends DiceTest {
8 public function testMultipleSharedInstancesByNameMixed() {
9 $rule = [];
10 $rule['shared'] = true;
11 $rule['constructParams'][] = 'FirstY';
12
13 $dice = $this->dice->addRule('Y', $rule);
14
15 $rule = [];
16 $rule['instanceOf'] = 'Y';
17 $rule['shared'] = true;
18 $rule['inherit'] = false;
19 $rule['constructParams'][] = 'SecondY';
20
21 $dice = $dice->addRule('[Y2]', $rule);
22
23 $rule = [];
24 $rule['constructParams'] = [ [\Dice\Dice::INSTANCE => 'Y'], [\Dice\Dice::INSTANCE => '[Y2]']];
25
26 $dice = $dice->addRule('Z', $rule);
27
28 $z = $dice->create('Z');
29 $this->assertEquals($z->y1->name, 'FirstY');
30 $this->assertEquals($z->y2->name, 'SecondY');
31 }
32
33 public function testNonSharedComponentByNameA() {
34 $rule = [];
35 $rule['instanceOf'] = 'ExtendedB';
36 $dice = $this->dice->addRule('$B', $rule);
37
38 $rule = [];
39 $rule['constructParams'][] = [\Dice\Dice::INSTANCE => '$B'];
40 $dice = $dice->addRule('A', $rule);
41
42 $a = $dice->create('A');
43 $this->assertInstanceOf('ExtendedB', $a->b);
44 }
45
46 public function testNonSharedComponentByName() {
47
48 $rule = [];
49 $rule['instanceOf'] = 'Y3';
50 $rule['constructParams'][] = 'test';
51
52
53 $dice = $this->dice->addRule('$Y2', $rule);
54
55
56 $y2 = $dice->create('$Y2');
57 //echo $y2->name;
58 $this->assertInstanceOf('Y3', $y2);
59
60 $rule = [];
61
62 $rule['constructParams'][] = [\Dice\Dice::INSTANCE => '$Y2'];
63 $dice = $dice->addRule('Y1', $rule);
64
65 $y1 = $dice->create('Y1');
66 $this->assertInstanceOf('Y3', $y1->y2);
67 }
68
69 public function testSubstitutionByName() {
70 $rule = [];
71 $rule['instanceOf'] = 'ExtendedB';
72 $dice = $this->dice->addRule('$B', $rule);
73
74 $rule = [];
75 $rule['substitutions']['B'] = [\Dice\Dice::INSTANCE => '$B'];
76
77 $dice = $dice->addRule('A', $rule);
78 $a = $dice->create('A');
79
80 $this->assertInstanceOf('ExtendedB', $a->b);
81 }
82
83 public function testMultipleSubstitutions() {
84 $rule = [];
85 $rule['instanceOf'] = 'Y2';
86 $rule['constructParams'][] = 'first';
87 $dice = $this->dice->addRule('$Y2A', $rule);
88
89 $rule = [];
90 $rule['instanceOf'] = 'Y2';
91 $rule['constructParams'][] = 'second';
92 $dice = $dice->addRule('$Y2B', $rule);
93
94 $rule = [];
95 $rule['constructParams'] = array([\Dice\Dice::INSTANCE => '$Y2A'], [\Dice\Dice::INSTANCE => '$Y2B']);
96 $dice = $dice->addRule('HasTwoSameDependencies', $rule);
97
98 $twodep = $dice->create('HasTwoSameDependencies');
99
100 $this->assertEquals('first', $twodep->y2a->name);
101 $this->assertEquals('second', $twodep->y2b->name);
102 }
103
104 public function testNamedInstanceCallWithInheritance() {
105 $rule1 = [];
106 $rule1['call'] = [
107 ['callMe', [1, 3] ],
108 ['callMe', [3, 4] ]
109 ];
110
111 $dice = $this->dice->addRule('Y', $rule1);
112
113 $rule2 = [];
114 $rule2['instanceOf'] = 'Y';
115 $rule2['constructParams'] = ['Foo'];
116
117 $dice = $dice->addRule('$MyInstance', $rule2);
118
119 $this->assertEquals(array_merge_recursive($rule1, $rule2), $dice->getRule('$MyInstance'));
120
121 }
122
123 public function testNamedInstanceCallWithoutInheritance() {
124 $rule1 = [];
125 $rule1['call'] = [
126 ['callMe', [1, 3] ],
127 ['callMe', [3, 4] ]
128 ];
129
130 $dice = $this->dice->addRule('Y', $rule1);
131
132 $rule2 = [];
133 $rule2['instanceOf'] = 'Y';
134 $rule2['inherit'] = false;
135 $rule2['constructParams'] = ['Foo'];
136
137 $dice = $dice->addRule('$MyInstance', $rule2);
138
139 $this->assertEquals($rule2, $dice->getRule('$MyInstance'));
140 }
141
142 }