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

Commit

Permalink
Update test suite to check object internal type.
Browse files Browse the repository at this point in the history
Introduce a new TestAsset\ObjectHintsClass as a sample to be used in test. Also update generator tests to check for object type.
  • Loading branch information
shulard committed Jul 3, 2017
1 parent ae7c4b6 commit a8acf4e
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 6 deletions.
13 changes: 12 additions & 1 deletion test/Generator/MethodGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
use ZendTest\Code\TestAsset\EmptyClass;
use ZendTest\Code\TestAsset\InternalHintsClass;
use ZendTest\Code\TestAsset\IterableHintsClass;
use ZendTest\Code\TestAsset\ObjectHintsClass;
use ZendTest\Code\TestAsset\NullableReturnTypeHintedClass;
use ZendTest\Code\TestAsset\ReturnTypeHintedClass;

Expand Down Expand Up @@ -364,9 +365,19 @@ public function returnTypeHintClassesProvider()
[NullableReturnTypeHintedClass::class, 'otherClassReturn', '?\\' . InternalHintsClass::class],
[IterableHintsClass::class, 'iterableReturnValue', 'iterable'],
[IterableHintsClass::class, 'nullableIterableReturnValue', '?iterable'],
[ObjectHintsClass::class, 'objectReturnValue', 'object'],
[ObjectHintsClass::class, 'nullableObjectReturnValue', '?object'],
];

return $parameters;
return array_filter(
$parameters,
function (array $parameter) {
return PHP_VERSION_ID >= 70200
|| (
false === strpos($parameter[2], 'object')
);
}
);
}

/**
Expand Down
21 changes: 16 additions & 5 deletions test/Generator/ParameterGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
use ZendTest\Code\TestAsset\EmptyClass;
use ZendTest\Code\TestAsset\InternalHintsClass;
use ZendTest\Code\TestAsset\IterableHintsClass;
use ZendTest\Code\TestAsset\ObjectHintsClass;
use ZendTest\Code\TestAsset\NullableHintsClass;
use ZendTest\Code\TestAsset\NullNullableDefaultHintsClass;
use ZendTest\Code\TestAsset\VariadicParametersClass;
Expand Down Expand Up @@ -345,9 +346,6 @@ public function validClassNameProvider()
['mixed'],
['Mixed'],
['MIXED'],
['object'],
['Object'],
['OBJECT'],
['resource'],
['Resource'],
['RESOURCE'],
Expand Down Expand Up @@ -464,17 +462,30 @@ public function reflectionHintsProvider()
[IterableHintsClass::class, 'iterableParameter', 'foo', 'iterable'],
[IterableHintsClass::class, 'nullableIterableParameter', 'foo', '?iterable'],
[IterableHintsClass::class, 'nullDefaultIterableParameter', 'foo', '?iterable'],
[ObjectHintsClass::class, 'objectParameter', 'foo', 'object'],
[ObjectHintsClass::class, 'nullableObjectParameter', 'foo', '?object'],
[ObjectHintsClass::class, 'nullDefaultObjectParameter', 'foo', '?object'],
];

$compatibleParameters = array_filter(
$parameters,
function (array $parameter) {
return PHP_VERSION_ID >= 70200
|| (
false === strpos($parameter[3], 'object')
);
}
);

// just re-organizing the keys so that the phpunit data set makes sense in errors:
return array_combine(
array_map(
function (array $definition) {
return $definition[0] . '#' . $definition[1];
},
$parameters
$compatibleParameters
),
$parameters
$compatibleParameters
);
}

Expand Down
3 changes: 3 additions & 0 deletions test/Generator/TypeGeneratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,9 @@ public function invalidTypeProvider()
['\\iterable'],
['\\Iterable'],
['\\ITERABLE'],
['\\object'],
['\\Object'],
['\\OBJECT'],
];

return array_combine(
Expand Down
26 changes: 26 additions & 0 deletions test/TestAsset/ObjectHintsClass.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

namespace ZendTest\Code\TestAsset;

class ObjectHintsClass extends EmptyClass
{
public function objectParameter(object $foo)
{
}

public function nullableObjectParameter(?object $foo)
{
}

public function nullDefaultObjectParameter(object $foo = null)
{
}

public function objectReturnValue() : object
{
}

public function nullableObjectReturnValue() : ?object
{
}
}

0 comments on commit a8acf4e

Please sign in to comment.