ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ILIAS\Component\Tests\Dependencies\ResolverTest Class Reference
+ Inheritance diagram for ILIAS\Component\Tests\Dependencies\ResolverTest:
+ Collaboration diagram for ILIAS\Component\Tests\Dependencies\ResolverTest:

Public Member Functions

 setUp ()
 
 testEmptyComponentSet ()
 
 testResolvePull ()
 
 testPullFailsNotExistent ()
 
 testPullFailsDuplicate ()
 
 testEmptySeek ()
 
 testResolveSeek ()
 
 testResolveUseOneOption ()
 
 testUseFailsNotExistent ()
 
 testUseFailsDuplicate ()
 
 testUseDisambiguateDuplicateSpecific ()
 
 testUseDisambiguateDuplicateGeneric ()
 
 testFindSimpleCycle ()
 
 testFindLongerCycle ()
 

Protected Attributes

Resolver $resolver
 

Detailed Description

Definition at line 28 of file ResolverTest.php.

Member Function Documentation

◆ setUp()

ILIAS\Component\Tests\Dependencies\ResolverTest::setUp ( )

Definition at line 32 of file ResolverTest.php.

32 : void
33 {
34 $this->resolver = new Resolver();
35 }

◆ testEmptyComponentSet()

ILIAS\Component\Tests\Dependencies\ResolverTest::testEmptyComponentSet ( )

Definition at line 37 of file ResolverTest.php.

37 : void
38 {
39 $result = $this->resolver->resolveDependencies([]);
40
41 $this->assertEquals([], $result);
42 }

◆ testEmptySeek()

ILIAS\Component\Tests\Dependencies\ResolverTest::testEmptySeek ( )

Definition at line 102 of file ResolverTest.php.

102 : void
103 {
104 $component = $this->createMock(Component::class);
105
106 $name = TestInterface::class;
107
108 $seek = new D\In(D\InType::SEEK, $name);
109
110 $c1 = new D\OfComponent($component, $seek);
111
112 $result = $this->resolver->resolveDependencies([], $c1);
113
114 $this->assertEquals([$c1], $result);
115 }
A dependency where the component needs something from the world.
Definition: In.php:27

◆ testFindLongerCycle()

ILIAS\Component\Tests\Dependencies\ResolverTest::testFindLongerCycle ( )

Definition at line 295 of file ResolverTest.php.

295 : void
296 {
297 $this->expectException(\LogicException::class);
298
299 $component = $this->createMock(Component::class);
300
301 $name = TestInterface::class;
302 $name2 = TestInterface2::class;
303 $name3 = TestInterface3::class;
304
305 $pull = new D\In(D\InType::PULL, $name);
306 $provide = new D\Out(D\OutType::PROVIDE, $name2, "Some\\Class", [$pull], []);
307 $c1 = new D\OfComponent($component, $pull, $provide);
308
309 $pull = new D\In(D\InType::PULL, $name2);
310 $provide = new D\Out(D\OutType::PROVIDE, $name3, "Some\\OtherClass", [$pull], []);
311 $c2 = new D\OfComponent($component, $pull, $provide);
312
313 $pull = new D\In(D\InType::PULL, $name3);
314 $provide = new D\Out(D\OutType::PROVIDE, $name, "Some\\OtherOtherClass", [$pull], []);
315 $c3 = new D\OfComponent($component, $pull, $provide);
316
317
318 $result = $this->resolver->resolveDependencies([], $c1, $c2, $c3);
319 }
A dependency where the component gives something to the world.
Definition: Out.php:27

◆ testFindSimpleCycle()

ILIAS\Component\Tests\Dependencies\ResolverTest::testFindSimpleCycle ( )

Definition at line 274 of file ResolverTest.php.

274 : void
275 {
276 $this->expectException(\LogicException::class);
277
278 $component = $this->createMock(Component::class);
279
280 $name = TestInterface::class;
281 $name2 = TestInterface2::class;
282
283 $pull = new D\In(D\InType::PULL, $name);
284 $provide = new D\Out(D\OutType::PROVIDE, $name2, "Some\\Class", [$pull], []);
285 $c1 = new D\OfComponent($component, $pull, $provide);
286
287 $pull = new D\In(D\InType::PULL, $name2);
288 $provide = new D\Out(D\OutType::PROVIDE, $name, "Some\\OtherClass", [$pull], []);
289 $c2 = new D\OfComponent($component, $pull, $provide);
290
291
292 $result = $this->resolver->resolveDependencies([], $c1, $c2);
293 }

◆ testPullFailsDuplicate()

ILIAS\Component\Tests\Dependencies\ResolverTest::testPullFailsDuplicate ( )

Definition at line 83 of file ResolverTest.php.

83 : void
84 {
85 $this->expectException(\LogicException::class);
86
87 $component = $this->createMock(Component::class);
88
89 $name = TestInterface::class;
90
91 $pull = new D\In(D\InType::PULL, $name);
92 $provide1 = new D\Out(D\OutType::PROVIDE, $name, null, []);
93 $provide2 = new D\Out(D\OutType::PROVIDE, $name, null, []);
94
95 $c1 = new D\OfComponent($component, $pull);
96 $c2 = new D\OfComponent($component, $provide1);
97 $c3 = new D\OfComponent($component, $provide2);
98
99 $this->resolver->resolveDependencies([], $c1, $c2, $c3);
100 }

◆ testPullFailsNotExistent()

ILIAS\Component\Tests\Dependencies\ResolverTest::testPullFailsNotExistent ( )

Definition at line 68 of file ResolverTest.php.

68 : void
69 {
70 $this->expectException(\LogicException::class);
71
72 $component = $this->createMock(Component::class);
73
74 $name = TestInterface::class;
75
76 $pull = new D\In(D\InType::PULL, $name);
77
78 $c1 = new D\OfComponent($component, $pull);
79
80 $this->resolver->resolveDependencies([], $c1);
81 }

◆ testResolvePull()

ILIAS\Component\Tests\Dependencies\ResolverTest::testResolvePull ( )

Definition at line 44 of file ResolverTest.php.

44 : void
45 {
46 $component = $this->createMock(Component::class);
47
48 $name = TestInterface::class;
49
50 $pull = new D\In(D\InType::PULL, $name);
51 $provide = new D\Out(D\OutType::PROVIDE, $name, null, []);
52
53 $c1 = new D\OfComponent($component, $pull);
54 $c2 = new D\OfComponent($component, $provide);
55
56 $result = $this->resolver->resolveDependencies([], $c1, $c2);
57
58 $pull = new D\In(D\InType::PULL, $name);
59 $provide = new D\Out(D\OutType::PROVIDE, $name, null, []);
60 $pull->addResolution($provide);
61
62 $c1 = new D\OfComponent($component, $pull);
63 $c2 = new D\OfComponent($component, $provide);
64
65 $this->assertEquals([$c1, $c2], $result);
66 }

◆ testResolveSeek()

ILIAS\Component\Tests\Dependencies\ResolverTest::testResolveSeek ( )

Definition at line 117 of file ResolverTest.php.

117 : void
118 {
119 $component = $this->createMock(Component::class);
120
121 $name = TestInterface::class;
122
123 $seek = new D\In(D\InType::SEEK, $name);
124 $contribute1 = new D\Out(D\OutType::CONTRIBUTE, $name, null, []);
125 $contribute2 = new D\Out(D\OutType::CONTRIBUTE, $name, null, []);
126
127 $c1 = new D\OfComponent($component, $seek);
128 $c2 = new D\OfComponent($component, $contribute1);
129 $c3 = new D\OfComponent($component, $contribute2);
130
131 $result = $this->resolver->resolveDependencies([], $c1, $c2, $c3);
132
133
134 $seek = new D\In(D\InType::SEEK, $name);
135 $contribute1 = new D\Out(D\OutType::CONTRIBUTE, $name, null, []);
136 $contribute2 = new D\Out(D\OutType::CONTRIBUTE, $name, null, []);
137 $seek->addResolution($contribute1);
138 $seek->addResolution($contribute2);
139
140 $c1 = new D\OfComponent($component, $seek);
141 $c2 = new D\OfComponent($component, $contribute1);
142 $c3 = new D\OfComponent($component, $contribute2);
143
144 $this->assertEquals([$c1, $c2, $c3], $result);
145 }

◆ testResolveUseOneOption()

ILIAS\Component\Tests\Dependencies\ResolverTest::testResolveUseOneOption ( )

Definition at line 147 of file ResolverTest.php.

147 : void
148 {
149 $component = $this->createMock(Component::class);
150
151 $name = TestInterface::class;
152
153 $use = new D\In(D\InType::USE, $name);
154 $implement = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
155
156 $c1 = new D\OfComponent($component, $use);
157 $c2 = new D\OfComponent($component, $implement);
158
159 $result = $this->resolver->resolveDependencies([], $c1, $c2);
160
161 $use = new D\In(D\InType::USE, $name);
162 $implement = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
163 $use->addResolution($implement);
164
165 $c1 = new D\OfComponent($component, $use);
166 $c2 = new D\OfComponent($component, $implement);
167
168 $this->assertEquals([$c1, $c2], $result);
169 }

◆ testUseDisambiguateDuplicateGeneric()

ILIAS\Component\Tests\Dependencies\ResolverTest::testUseDisambiguateDuplicateGeneric ( )

Definition at line 239 of file ResolverTest.php.

239 : void
240 {
241 $component = $this->createMock(Component::class);
242
243 $name = TestInterface::class;
244
245 $use = new D\In(D\InType::USE, $name);
246 $implement1 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
247 $implement2 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\OtherClass"], []);
248
249 $c1 = new D\OfComponent($component, $use);
250 $c2 = new D\OfComponent($component, $implement1);
251 $c3 = new D\OfComponent($component, $implement2);
252
253 $disambiguation = [
254 "*" => [
255 TestInterface::class => "Some\\OtherClass"
256 ]
257 ];
258
259 $result = $this->resolver->resolveDependencies($disambiguation, $c1, $c2, $c3);
260
261 $use = new D\In(D\InType::USE, $name);
262 $implement1 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
263 $implement2 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\OtherClass"], []);
264 $use->addResolution($implement2);
265
266
267 $c1 = new D\OfComponent($component, $use);
268 $c2 = new D\OfComponent($component, $implement1);
269 $c3 = new D\OfComponent($component, $implement2);
270
271 $this->assertEquals([$c1, $c2, $c3], $result);
272 }

◆ testUseDisambiguateDuplicateSpecific()

ILIAS\Component\Tests\Dependencies\ResolverTest::testUseDisambiguateDuplicateSpecific ( )

Definition at line 205 of file ResolverTest.php.

205 : void
206 {
207 $component = $this->createMock(Component::class);
208
209 $name = TestInterface::class;
210
211 $use = new D\In(D\InType::USE, $name);
212 $implement1 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
213 $implement2 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\OtherClass"], []);
214
215 $c1 = new D\OfComponent($component, $use);
216 $c2 = new D\OfComponent($component, $implement1);
217 $c3 = new D\OfComponent($component, $implement2);
218
219 $disambiguation = [
220 get_class($component) => [
221 TestInterface::class => "Some\\OtherClass"
222 ]
223 ];
224
225 $result = $this->resolver->resolveDependencies($disambiguation, $c1, $c2, $c3);
226
227 $use = new D\In(D\InType::USE, $name);
228 $implement1 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
229 $implement2 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\OtherClass"], []);
230 $use->addResolution($implement2);
231
232 $c1 = new D\OfComponent($component, $use);
233 $c2 = new D\OfComponent($component, $implement1);
234 $c3 = new D\OfComponent($component, $implement2);
235
236 $this->assertEquals([$c1, $c2, $c3], $result);
237 }

◆ testUseFailsDuplicate()

ILIAS\Component\Tests\Dependencies\ResolverTest::testUseFailsDuplicate ( )

Definition at line 186 of file ResolverTest.php.

186 : void
187 {
188 $this->expectException(\LogicException::class);
189
190 $component = $this->createMock(Component::class);
191
192 $name = TestInterface::class;
193
194 $use = new D\In(D\InType::USE, $name);
195 $implement1 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
196 $implement2 = new D\Out(D\OutType::IMPLEMENT, $name, ["class" => "Some\\Class"], []);
197
198 $c1 = new D\OfComponent($component, $use);
199 $c2 = new D\OfComponent($component, $implement1);
200 $c3 = new D\OfComponent($component, $implement2);
201
202 $this->resolver->resolveDependencies([], $c1, $c2, $c3);
203 }

◆ testUseFailsNotExistent()

ILIAS\Component\Tests\Dependencies\ResolverTest::testUseFailsNotExistent ( )

Definition at line 171 of file ResolverTest.php.

171 : void
172 {
173 $this->expectException(\LogicException::class);
174
175 $component = $this->createMock(Component::class);
176
177 $name = TestInterface::class;
178
179 $use = new D\In(D\InType::USE, $name);
180
181 $c1 = new D\OfComponent($component, $use);
182
183 $this->resolver->resolveDependencies([], $c1);
184 }

Field Documentation

◆ $resolver

Resolver ILIAS\Component\Tests\Dependencies\ResolverTest::$resolver
protected

Definition at line 30 of file ResolverTest.php.


The documentation for this class was generated from the following file: