* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\VarDumper\Tests\Caster; use Symfony\Component\VarDumper\Test\VarDumperTestCase; use Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass; /** * @author Nicolas Grekas */ class ReflectionCasterTest extends VarDumperTestCase { public function testReflectionCaster() { $var = new \ReflectionClass('ReflectionClass'); $this->assertDumpMatchesFormat( <<<'EOTXT' ReflectionClass { +name: "ReflectionClass" %Aimplements: array:%d [ 0 => "Reflector" %A] constants: array:3 [ "IS_IMPLICIT_ABSTRACT" => 16 "IS_EXPLICIT_ABSTRACT" => 32 "IS_FINAL" => %d ] properties: array:%d [ "name" => ReflectionProperty { %A +name: "name" +class: "ReflectionClass" %A modifiers: "public" extra: null } %A] methods: array:%d [ %A "export" => ReflectionMethod { +name: "export" +class: "ReflectionClass" %A parameters: array:2 [ "$%s" => ReflectionParameter { %A position: 0 %A } ] modifiers: "public static" } %A } EOTXT , $var ); } public function testReflectionParameter() { $var = new \ReflectionParameter(__NAMESPACE__.'\reflectionParameterFixture', 0); $this->assertDumpMatchesFormat( <<<'EOTXT' ReflectionParameter { +name: "arg1" position: 0 typeHint: "Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass" default: null } EOTXT , $var ); } /** * @requires PHP 7.0 */ public function testReflectionParameterScalar() { $f = eval('return function (int $a) {};'); $var = new \ReflectionParameter($f, 0); $this->assertDumpMatchesFormat( <<<'EOTXT' ReflectionParameter { +name: "a" position: 0 typeHint: "int" } EOTXT , $var ); } /** * @requires PHP 7.0 */ public function testReturnType() { $f = eval('return function ():int {};'); $line = __LINE__ - 1; $this->assertDumpMatchesFormat( <<