Skip to content
This repository was archived by the owner on Jan 29, 2020. It is now read-only.

Commit b959211

Browse files
committed
Update test suite to check object internal type.
Introduce a new TestAsset\ObjectHintsClass as a sample to be used in test. Also update generator tests to check for object type.
1 parent ae7c4b6 commit b959211

File tree

4 files changed

+63
-12
lines changed

4 files changed

+63
-12
lines changed

test/Generator/MethodGeneratorTest.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
use ZendTest\Code\TestAsset\EmptyClass;
2323
use ZendTest\Code\TestAsset\InternalHintsClass;
2424
use ZendTest\Code\TestAsset\IterableHintsClass;
25+
use ZendTest\Code\TestAsset\ObjectHintsClass;
2526
use ZendTest\Code\TestAsset\NullableReturnTypeHintedClass;
2627
use ZendTest\Code\TestAsset\ReturnTypeHintedClass;
2728

@@ -364,9 +365,19 @@ public function returnTypeHintClassesProvider()
364365
[NullableReturnTypeHintedClass::class, 'otherClassReturn', '?\\' . InternalHintsClass::class],
365366
[IterableHintsClass::class, 'iterableReturnValue', 'iterable'],
366367
[IterableHintsClass::class, 'nullableIterableReturnValue', '?iterable'],
368+
[ObjectHintsClass::class, 'objectReturnValue', 'object'],
369+
[ObjectHintsClass::class, 'nullableObjectReturnValue', '?object'],
367370
];
368371

369-
return $parameters;
372+
return array_filter(
373+
$parameters,
374+
function (array $parameter) {
375+
return PHP_VERSION_ID >= 70200
376+
|| (
377+
false === strpos($parameter[2], 'object')
378+
);
379+
}
380+
);
370381
}
371382

372383
/**

test/Generator/ParameterGeneratorTest.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
use ZendTest\Code\TestAsset\EmptyClass;
2222
use ZendTest\Code\TestAsset\InternalHintsClass;
2323
use ZendTest\Code\TestAsset\IterableHintsClass;
24+
use ZendTest\Code\TestAsset\ObjectHintsClass;
2425
use ZendTest\Code\TestAsset\NullableHintsClass;
2526
use ZendTest\Code\TestAsset\NullNullableDefaultHintsClass;
2627
use ZendTest\Code\TestAsset\VariadicParametersClass;
@@ -345,9 +346,6 @@ public function validClassNameProvider()
345346
['mixed'],
346347
['Mixed'],
347348
['MIXED'],
348-
['object'],
349-
['Object'],
350-
['OBJECT'],
351349
['resource'],
352350
['Resource'],
353351
['RESOURCE'],
@@ -464,17 +462,30 @@ public function reflectionHintsProvider()
464462
[IterableHintsClass::class, 'iterableParameter', 'foo', 'iterable'],
465463
[IterableHintsClass::class, 'nullableIterableParameter', 'foo', '?iterable'],
466464
[IterableHintsClass::class, 'nullDefaultIterableParameter', 'foo', '?iterable'],
465+
[ObjectHintsClass::class, 'objectParameter', 'foo', 'object'],
466+
[ObjectHintsClass::class, 'nullableObjectParameter', 'foo', '?object'],
467+
[ObjectHintsClass::class, 'nullDefaultObjectParameter', 'foo', '?object'],
467468
];
468469

470+
$compatibleParameters = array_filter(
471+
$parameters,
472+
function (array $parameter) {
473+
return PHP_VERSION_ID >= 70200
474+
|| (
475+
false === strpos($parameter[3], 'object')
476+
);
477+
}
478+
);
479+
469480
// just re-organizing the keys so that the phpunit data set makes sense in errors:
470481
return array_combine(
471482
array_map(
472483
function (array $definition) {
473484
return $definition[0] . '#' . $definition[1];
474485
},
475-
$parameters
486+
$compatibleParameters
476487
),
477-
$parameters
488+
$compatibleParameters
478489
);
479490
}
480491

test/Generator/TypeGeneratorTest.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,9 @@ public function validTypeProvider()
117117
['iterable', 'iterable'],
118118
['Iterable', 'iterable'],
119119
['ITERABLE', 'iterable'],
120-
['object', '\\object'],
121-
['Object', '\\Object'],
122-
['OBJECT', '\\OBJECT'],
120+
['object', 'object'],
121+
['Object', 'object'],
122+
['OBJECT', 'object'],
123123
['mixed', '\\mixed'],
124124
['Mixed', '\\Mixed'],
125125
['MIXED', '\\MIXED'],
@@ -157,9 +157,9 @@ public function validTypeProvider()
157157
['?iterable', '?iterable'],
158158
['?Iterable', '?iterable'],
159159
['?ITERABLE', '?iterable'],
160-
['?object', '?\\object'],
161-
['?Object', '?\\Object'],
162-
['?OBJECT', '?\\OBJECT'],
160+
['?object', '?object'],
161+
['?Object', '?object'],
162+
['?OBJECT', '?object'],
163163
['?mixed', '?\\mixed'],
164164
['?Mixed', '?\\Mixed'],
165165
['?MIXED', '?\\MIXED'],
@@ -241,6 +241,9 @@ public function invalidTypeProvider()
241241
['\\iterable'],
242242
['\\Iterable'],
243243
['\\ITERABLE'],
244+
['\\object'],
245+
['\\Object'],
246+
['\\OBJECT'],
244247
];
245248

246249
return array_combine(

test/TestAsset/ObjectHintsClass.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
namespace ZendTest\Code\TestAsset;
4+
5+
class ObjectHintsClass extends EmptyClass
6+
{
7+
public function objectParameter(object $foo)
8+
{
9+
}
10+
11+
public function nullableObjectParameter(?object $foo)
12+
{
13+
}
14+
15+
public function nullDefaultObjectParameter(object $foo = null)
16+
{
17+
}
18+
19+
public function objectReturnValue() : object
20+
{
21+
}
22+
23+
public function nullableObjectReturnValue() : ?object
24+
{
25+
}
26+
}

0 commit comments

Comments
 (0)