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

Commit b95a4e4

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 4ffe0ba commit b95a4e4

File tree

4 files changed

+52
-7
lines changed

4 files changed

+52
-7
lines changed

test/Generator/MethodGeneratorTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
use ZendTest\Code\TestAsset\EmptyClass;
1818
use ZendTest\Code\TestAsset\InternalHintsClass;
1919
use ZendTest\Code\TestAsset\IterableHintsClass;
20+
use ZendTest\Code\TestAsset\ObjectHintsClass;
2021
use ZendTest\Code\TestAsset\NullableReturnTypeHintedClass;
2122
use ZendTest\Code\TestAsset\ReturnTypeHintedClass;
2223

@@ -365,16 +366,22 @@ public function returnTypeHintClassesProvider()
365366
[NullableReturnTypeHintedClass::class, 'otherClassReturn', '?\\' . InternalHintsClass::class],
366367
[IterableHintsClass::class, 'iterableReturnValue', 'iterable'],
367368
[IterableHintsClass::class, 'nullableIterableReturnValue', '?iterable'],
369+
[ObjectHintsClass::class, 'objectReturnValue', 'object'],
370+
[ObjectHintsClass::class, 'nullableObjectReturnValue', '?object'],
368371
];
369372

370373
return array_filter(
371374
$parameters,
372375
function (array $parameter) {
373-
return PHP_VERSION_ID >= 70100
376+
return (PHP_VERSION_ID >= 70200
377+
|| (
378+
false === strpos($parameter[2], 'object')
379+
))
380+
&& (PHP_VERSION_ID >= 70100
374381
|| (
375382
false === strpos($parameter[2], '?')
376383
&& ! in_array(strtolower($parameter[2]), ['void', 'iterable'])
377-
);
384+
));
378385
}
379386
);
380387
}

test/Generator/ParameterGeneratorTest.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
use ZendTest\Code\TestAsset\EmptyClass;
2020
use ZendTest\Code\TestAsset\InternalHintsClass;
2121
use ZendTest\Code\TestAsset\IterableHintsClass;
22+
use ZendTest\Code\TestAsset\ObjectHintsClass;
2223
use ZendTest\Code\TestAsset\NullableHintsClass;
2324
use ZendTest\Code\TestAsset\NullNullableDefaultHintsClass;
2425
use ZendTest\Code\TestAsset\VariadicParametersClass;
@@ -349,9 +350,6 @@ public function validClassNameProvider()
349350
['mixed'],
350351
['Mixed'],
351352
['MIXED'],
352-
['object'],
353-
['Object'],
354-
['OBJECT'],
355353
['resource'],
356354
['Resource'],
357355
['RESOURCE'],
@@ -472,13 +470,24 @@ public function reflectionHintsProvider()
472470
[IterableHintsClass::class, 'iterableParameter', 'foo', 'iterable'],
473471
[IterableHintsClass::class, 'nullableIterableParameter', 'foo', '?iterable'],
474472
[IterableHintsClass::class, 'nullDefaultIterableParameter', 'foo', '?iterable'],
473+
[ObjectHintsClass::class, 'objectParameter', 'foo', 'object'],
474+
[ObjectHintsClass::class, 'nullableObjectParameter', 'foo', '?object'],
475+
[ObjectHintsClass::class, 'nullDefaultObjectParameter', 'foo', '?object'],
475476
];
476477

477478
$compatibleParameters = array_filter(
478479
$parameters,
479480
function (array $parameter) {
480-
return PHP_VERSION_ID >= 70100
481-
|| (false === strpos($parameter[3], '?') && 'iterable' !== strtolower($parameter[3]));
481+
482+
return (PHP_VERSION_ID >= 70200
483+
|| (
484+
false === strpos($parameter[3], 'object')
485+
))
486+
&& (PHP_VERSION_ID >= 70100
487+
|| (
488+
false === strpos($parameter[3], '?')
489+
&& ! in_array(strtolower($parameter[3]), ['void', 'iterable'])
490+
));
482491
}
483492
);
484493

test/Generator/TypeGeneratorTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,9 @@ public function invalidTypeProvider()
242242
['\\iterable'],
243243
['\\Iterable'],
244244
['\\ITERABLE'],
245+
['\\object'],
246+
['\\Object'],
247+
['\\OBJECT'],
245248
];
246249

247250
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)