1 | <?php |
||
29 | class TypeResolverTest extends \PHPUnit_Framework_TestCase |
||
30 | { |
||
31 | /** |
||
32 | * @param string $keyword |
||
33 | * @param string $expectedClass |
||
34 | * |
||
35 | * @covers ::__construct |
||
36 | * @covers ::resolve |
||
37 | * @covers ::<private> |
||
38 | * |
||
39 | * @uses \phpDocumentor\Reflection\Types\Context |
||
40 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
41 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
42 | * |
||
43 | * @dataProvider provideKeywords |
||
44 | */ |
||
45 | public function testResolvingKeywords($keyword, $expectedClass) |
||
53 | |||
54 | /** |
||
55 | * @param string $fqsen |
||
56 | * |
||
57 | * @covers ::__construct |
||
58 | * @covers ::resolve |
||
59 | * @covers ::<private> |
||
60 | * |
||
61 | * @uses \phpDocumentor\Reflection\Types\Context |
||
62 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
63 | * @uses \phpDocumentor\Reflection\Fqsen |
||
64 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
65 | * |
||
66 | * @dataProvider provideFqcn |
||
67 | */ |
||
68 | public function testResolvingFQSENs($fqsen) |
||
79 | |||
80 | /** |
||
81 | * @covers ::__construct |
||
82 | * @covers ::resolve |
||
83 | * @covers ::<private> |
||
84 | * |
||
85 | * @uses \phpDocumentor\Reflection\Types\Context |
||
86 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
87 | * @uses \phpDocumentor\Reflection\Fqsen |
||
88 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
89 | */ |
||
90 | public function testResolvingRelativeQSENsBasedOnNamespace() |
||
101 | |||
102 | /** |
||
103 | * @covers ::__construct |
||
104 | * @covers ::resolve |
||
105 | * @covers ::<private> |
||
106 | * |
||
107 | * @uses \phpDocumentor\Reflection\Types\Context |
||
108 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
109 | * @uses \phpDocumentor\Reflection\Fqsen |
||
110 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
111 | */ |
||
112 | public function testResolvingRelativeQSENsBasedOnNamespaceAlias() |
||
126 | |||
127 | /** |
||
128 | * @covers ::__construct |
||
129 | * @covers ::resolve |
||
130 | * @covers ::<private> |
||
131 | * |
||
132 | * @uses \phpDocumentor\Reflection\Types\Context |
||
133 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
134 | * @uses \phpDocumentor\Reflection\Types\String_ |
||
135 | */ |
||
136 | public function testResolvingTypedArrays() |
||
148 | |||
149 | /** |
||
150 | * @covers ::__construct |
||
151 | * @covers ::resolve |
||
152 | * @covers ::<private> |
||
153 | * |
||
154 | * @uses \phpDocumentor\Reflection\Types\Context |
||
155 | * @uses \phpDocumentor\Reflection\Types\Nullable |
||
156 | * @uses \phpDocumentor\Reflection\Types\String_ |
||
157 | */ |
||
158 | public function testResolvingNullableTypes() |
||
169 | |||
170 | /** |
||
171 | * @covers ::__construct |
||
172 | * @covers ::resolve |
||
173 | * @covers ::<private> |
||
174 | * |
||
175 | * @uses phpDocumentor\Reflection\Types\Context |
||
176 | * @uses phpDocumentor\Reflection\Types\Array_ |
||
177 | * @uses phpDocumentor\Reflection\Types\String_ |
||
178 | */ |
||
179 | public function testResolvingNestedTypedArrays() |
||
199 | |||
200 | /** |
||
201 | * @covers ::__construct |
||
202 | * @covers ::resolve |
||
203 | * @covers ::<private> |
||
204 | * |
||
205 | * @uses \phpDocumentor\Reflection\Types\Context |
||
206 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
207 | * @uses \phpDocumentor\Reflection\Types\String_ |
||
208 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
209 | * @uses \phpDocumentor\Reflection\Fqsen |
||
210 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
211 | */ |
||
212 | public function testResolvingCompoundTypes() |
||
232 | |||
233 | /** |
||
234 | * @covers ::__construct |
||
235 | * @covers ::resolve |
||
236 | * @covers ::<private> |
||
237 | * |
||
238 | * @uses \phpDocumentor\Reflection\Types\Context |
||
239 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
240 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
241 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
242 | * @uses \phpDocumentor\Reflection\Fqsen |
||
243 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
244 | */ |
||
245 | public function testResolvingCompoundTypedArrayTypes() |
||
266 | |||
267 | |||
268 | /** |
||
269 | * @covers ::__construct |
||
270 | * @covers ::resolve |
||
271 | * @covers ::<private> |
||
272 | * |
||
273 | * @uses \phpDocumentor\Reflection\Types\Context |
||
274 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
275 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
276 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
277 | * @uses \phpDocumentor\Reflection\Fqsen |
||
278 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
279 | */ |
||
280 | public function testResolvingArrayExpressionObjectsTypes() |
||
304 | |||
305 | /** |
||
306 | * @covers ::__construct |
||
307 | * @covers ::resolve |
||
308 | * @covers ::<private> |
||
309 | * |
||
310 | * @uses \phpDocumentor\Reflection\Types\Context |
||
311 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
312 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
313 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
314 | * @uses \phpDocumentor\Reflection\Fqsen |
||
315 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
316 | */ |
||
317 | public function testResolvingArrayExpressionSimpleTypes() |
||
345 | |||
346 | /** |
||
347 | * @covers ::__construct |
||
348 | * @covers ::resolve |
||
349 | * @covers ::<private> |
||
350 | * |
||
351 | * @uses \phpDocumentor\Reflection\Types\Context |
||
352 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
353 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
354 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
355 | * @uses \phpDocumentor\Reflection\Fqsen |
||
356 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
357 | */ |
||
358 | public function testResolvingArrayOfArrayExpressionTypes() |
||
385 | |||
386 | |||
387 | /** |
||
388 | * @covers ::__construct |
||
389 | * @covers ::resolve |
||
390 | * @covers ::<private> |
||
391 | * |
||
392 | * @uses \phpDocumentor\Reflection\Types\Context |
||
393 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
394 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
395 | * @uses \phpDocumentor\Reflection\Types\Object_ |
||
396 | * @uses \phpDocumentor\Reflection\Fqsen |
||
397 | * @uses \phpDocumentor\Reflection\FqsenResolver |
||
398 | */ |
||
399 | public function testResolvingArrayExpressionOrCompoundTypes() |
||
434 | |||
435 | /** |
||
436 | * This test asserts that the parameter order is correct. |
||
437 | * |
||
438 | * When you pass two arrays separated by the compound operator (i.e. 'integer[]|string[]') then we always split the |
||
439 | * expression in its compound parts and then we parse the types with the array operators. If we were to switch the |
||
440 | * order around then 'integer[]|string[]' would read as an array of string or integer array; which is something |
||
441 | * other than what we intend. |
||
442 | * |
||
443 | * @covers ::__construct |
||
444 | * @covers ::resolve |
||
445 | * @covers ::<private> |
||
446 | * |
||
447 | * @uses \phpDocumentor\Reflection\Types\Context |
||
448 | * @uses \phpDocumentor\Reflection\Types\Compound |
||
449 | * @uses \phpDocumentor\Reflection\Types\Array_ |
||
450 | * @uses \phpDocumentor\Reflection\Types\Integer |
||
451 | * @uses \phpDocumentor\Reflection\Types\String_ |
||
452 | */ |
||
453 | public function testResolvingCompoundTypesWithTwoArrays() |
||
474 | |||
475 | /** |
||
476 | * @covers ::__construct |
||
477 | * @covers ::addKeyword |
||
478 | * @uses \phpDocumentor\Reflection\TypeResolver::resolve |
||
479 | * @uses \phpDocumentor\Reflection\TypeResolver::<private> |
||
480 | * @uses \phpDocumentor\Reflection\Types\Context |
||
481 | */ |
||
482 | public function testAddingAKeyword() |
||
496 | |||
497 | /** |
||
498 | * @covers ::__construct |
||
499 | * @covers ::addKeyword |
||
500 | * @uses \phpDocumentor\Reflection\Types\Context |
||
501 | * @expectedException \InvalidArgumentException |
||
502 | */ |
||
503 | public function testAddingAKeywordFailsIfTypeClassDoesNotExist() |
||
508 | |||
509 | /** |
||
510 | * @covers ::__construct |
||
511 | * @covers ::addKeyword |
||
512 | * @uses \phpDocumentor\Reflection\Types\Context |
||
513 | * @expectedException \InvalidArgumentException |
||
514 | */ |
||
515 | public function testAddingAKeywordFailsIfTypeClassDoesNotImplementTypeInterface() |
||
520 | |||
521 | /** |
||
522 | * @covers ::__construct |
||
523 | * @covers ::resolve |
||
524 | * @uses \phpDocumentor\Reflection\Types\Context |
||
525 | * |
||
526 | * @expectedException \InvalidArgumentException |
||
527 | */ |
||
528 | public function testExceptionIsThrownIfTypeIsEmpty() |
||
533 | |||
534 | /** |
||
535 | * @covers ::__construct |
||
536 | * @covers ::resolve |
||
537 | * @uses \phpDocumentor\Reflection\Types\Context |
||
538 | * |
||
539 | * @expectedException \InvalidArgumentException |
||
540 | */ |
||
541 | public function testExceptionIsThrownIfTypeIsNotAString() |
||
546 | |||
547 | /** |
||
548 | * Returns a list of keywords and expected classes that are created from them. |
||
549 | * |
||
550 | * @return string[][] |
||
551 | */ |
||
552 | public function provideKeywords() |
||
578 | |||
579 | /** |
||
580 | * Provides a list of FQSENs to test the resolution patterns with. |
||
581 | * |
||
582 | * @return string[][] |
||
583 | */ |
||
584 | public function provideFqcn() |
||
591 | } |
||
592 |