annotate vendor/symfony/var-dumper/Tests/Caster/ReflectionCasterTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 7a779792577d
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\VarDumper\Tests\Caster;
Chris@0 13
Chris@0 14 use PHPUnit\Framework\TestCase;
Chris@0 15 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
Chris@0 16 use Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo;
Chris@0 17 use Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass;
Chris@0 18
Chris@0 19 /**
Chris@0 20 * @author Nicolas Grekas <p@tchwork.com>
Chris@0 21 */
Chris@0 22 class ReflectionCasterTest extends TestCase
Chris@0 23 {
Chris@0 24 use VarDumperTestTrait;
Chris@0 25
Chris@0 26 public function testReflectionCaster()
Chris@0 27 {
Chris@0 28 $var = new \ReflectionClass('ReflectionClass');
Chris@0 29
Chris@0 30 $this->assertDumpMatchesFormat(
Chris@0 31 <<<'EOTXT'
Chris@0 32 ReflectionClass {
Chris@0 33 +name: "ReflectionClass"
Chris@0 34 %Aimplements: array:%d [
Chris@0 35 0 => "Reflector"
Chris@0 36 %A]
Chris@0 37 constants: array:3 [
Chris@0 38 "IS_IMPLICIT_ABSTRACT" => 16
Chris@0 39 "IS_EXPLICIT_ABSTRACT" => 32
Chris@0 40 "IS_FINAL" => %d
Chris@0 41 ]
Chris@0 42 properties: array:%d [
Chris@0 43 "name" => ReflectionProperty {
Chris@0 44 %A +name: "name"
Chris@0 45 +class: "ReflectionClass"
Chris@0 46 %A modifiers: "public"
Chris@0 47 }
Chris@0 48 %A]
Chris@0 49 methods: array:%d [
Chris@0 50 %A
Chris@0 51 "export" => ReflectionMethod {
Chris@0 52 +name: "export"
Chris@0 53 +class: "ReflectionClass"
Chris@0 54 %A parameters: {
Chris@0 55 $%s: ReflectionParameter {
Chris@0 56 %A position: 0
Chris@0 57 %A
Chris@0 58 }
Chris@0 59 EOTXT
Chris@0 60 , $var
Chris@0 61 );
Chris@0 62 }
Chris@0 63
Chris@0 64 public function testClosureCaster()
Chris@0 65 {
Chris@0 66 $a = $b = 123;
Chris@0 67 $var = function ($x) use ($a, &$b) {};
Chris@0 68
Chris@0 69 $this->assertDumpMatchesFormat(
Chris@0 70 <<<EOTXT
Chris@0 71 Closure {
Chris@0 72 %Aparameters: {
Chris@0 73 \$x: {}
Chris@0 74 }
Chris@0 75 use: {
Chris@0 76 \$a: 123
Chris@0 77 \$b: & 123
Chris@0 78 }
Chris@0 79 file: "%sReflectionCasterTest.php"
Chris@0 80 line: "67 to 67"
Chris@0 81 }
Chris@0 82 EOTXT
Chris@0 83 , $var
Chris@0 84 );
Chris@0 85 }
Chris@0 86
Chris@0 87 public function testReflectionParameter()
Chris@0 88 {
Chris@0 89 $var = new \ReflectionParameter(__NAMESPACE__.'\reflectionParameterFixture', 0);
Chris@0 90
Chris@0 91 $this->assertDumpMatchesFormat(
Chris@0 92 <<<'EOTXT'
Chris@0 93 ReflectionParameter {
Chris@0 94 +name: "arg1"
Chris@0 95 position: 0
Chris@0 96 typeHint: "Symfony\Component\VarDumper\Tests\Fixtures\NotLoadableClass"
Chris@0 97 default: null
Chris@0 98 }
Chris@0 99 EOTXT
Chris@0 100 , $var
Chris@0 101 );
Chris@0 102 }
Chris@0 103
Chris@0 104 /**
Chris@0 105 * @requires PHP 7.0
Chris@0 106 */
Chris@0 107 public function testReflectionParameterScalar()
Chris@0 108 {
Chris@0 109 $f = eval('return function (int $a) {};');
Chris@0 110 $var = new \ReflectionParameter($f, 0);
Chris@0 111
Chris@0 112 $this->assertDumpMatchesFormat(
Chris@0 113 <<<'EOTXT'
Chris@0 114 ReflectionParameter {
Chris@0 115 +name: "a"
Chris@0 116 position: 0
Chris@0 117 typeHint: "int"
Chris@0 118 }
Chris@0 119 EOTXT
Chris@0 120 , $var
Chris@0 121 );
Chris@0 122 }
Chris@0 123
Chris@0 124 /**
Chris@0 125 * @requires PHP 7.0
Chris@0 126 */
Chris@0 127 public function testReturnType()
Chris@0 128 {
Chris@0 129 $f = eval('return function ():int {};');
Chris@0 130 $line = __LINE__ - 1;
Chris@0 131
Chris@0 132 $this->assertDumpMatchesFormat(
Chris@0 133 <<<EOTXT
Chris@0 134 Closure {
Chris@0 135 returnType: "int"
Chris@0 136 class: "Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest"
Chris@0 137 this: Symfony\Component\VarDumper\Tests\Caster\ReflectionCasterTest { …}
Chris@0 138 file: "%sReflectionCasterTest.php($line) : eval()'d code"
Chris@0 139 line: "1 to 1"
Chris@0 140 }
Chris@0 141 EOTXT
Chris@0 142 , $f
Chris@0 143 );
Chris@0 144 }
Chris@0 145
Chris@0 146 /**
Chris@0 147 * @requires PHP 7.0
Chris@0 148 */
Chris@0 149 public function testGenerator()
Chris@0 150 {
Chris@0 151 if (extension_loaded('xdebug')) {
Chris@0 152 $this->markTestSkipped('xdebug is active');
Chris@0 153 }
Chris@0 154
Chris@0 155 $generator = new GeneratorDemo();
Chris@0 156 $generator = $generator->baz();
Chris@0 157
Chris@0 158 $expectedDump = <<<'EODUMP'
Chris@0 159 Generator {
Chris@0 160 this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …}
Chris@0 161 executing: {
Chris@0 162 Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo->baz(): {
Chris@0 163 %sGeneratorDemo.php:14: {
Chris@0 164 : {
Chris@0 165 : yield from bar();
Chris@0 166 : }
Chris@0 167 }
Chris@0 168 }
Chris@0 169 }
Chris@0 170 closed: false
Chris@0 171 }
Chris@0 172 EODUMP;
Chris@0 173
Chris@0 174 $this->assertDumpMatchesFormat($expectedDump, $generator);
Chris@0 175
Chris@0 176 foreach ($generator as $v) {
Chris@0 177 break;
Chris@0 178 }
Chris@0 179
Chris@0 180 $expectedDump = <<<'EODUMP'
Chris@0 181 array:2 [
Chris@0 182 0 => ReflectionGenerator {
Chris@0 183 this: Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo { …}
Chris@0 184 trace: {
Chris@0 185 %sGeneratorDemo.php:9: {
Chris@0 186 : {
Chris@0 187 : yield 1;
Chris@0 188 : }
Chris@0 189 }
Chris@0 190 %sGeneratorDemo.php:20: {
Chris@0 191 : {
Chris@0 192 : yield from GeneratorDemo::foo();
Chris@0 193 : }
Chris@0 194 }
Chris@0 195 %sGeneratorDemo.php:14: {
Chris@0 196 : {
Chris@0 197 : yield from bar();
Chris@0 198 : }
Chris@0 199 }
Chris@0 200 }
Chris@0 201 closed: false
Chris@0 202 }
Chris@0 203 1 => Generator {
Chris@0 204 executing: {
Chris@0 205 Symfony\Component\VarDumper\Tests\Fixtures\GeneratorDemo::foo(): {
Chris@0 206 %sGeneratorDemo.php:10: {
Chris@0 207 : yield 1;
Chris@0 208 : }
Chris@0 209 :
Chris@0 210 }
Chris@0 211 }
Chris@0 212 }
Chris@0 213 closed: false
Chris@0 214 }
Chris@0 215 ]
Chris@0 216 EODUMP;
Chris@0 217
Chris@0 218 $r = new \ReflectionGenerator($generator);
Chris@0 219 $this->assertDumpMatchesFormat($expectedDump, array($r, $r->getExecutingGenerator()));
Chris@0 220
Chris@0 221 foreach ($generator as $v) {
Chris@0 222 }
Chris@0 223
Chris@0 224 $expectedDump = <<<'EODUMP'
Chris@0 225 Generator {
Chris@0 226 closed: true
Chris@0 227 }
Chris@0 228 EODUMP;
Chris@0 229 $this->assertDumpMatchesFormat($expectedDump, $generator);
Chris@0 230 }
Chris@0 231 }
Chris@0 232
Chris@0 233 function reflectionParameterFixture(NotLoadableClass $arg1 = null, $arg2)
Chris@0 234 {
Chris@0 235 }