* * 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 PHPUnit\Framework\TestCase; use Symfony\Component\VarDumper\Caster\ArgsStub; use Symfony\Component\VarDumper\Caster\ClassStub; use Symfony\Component\VarDumper\Caster\LinkStub; use Symfony\Component\VarDumper\Cloner\VarCloner; use Symfony\Component\VarDumper\Dumper\HtmlDumper; use Symfony\Component\VarDumper\Test\VarDumperTestTrait; use Symfony\Component\VarDumper\Tests\Fixtures\FooInterface; class StubCasterTest extends TestCase { use VarDumperTestTrait; public function testArgsStubWithDefaults($foo = 234, $bar = 456) { $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)]; $expectedDump = <<<'EODUMP' array:1 [ 0 => { $foo: 123 } ] EODUMP; $this->assertDumpMatchesFormat($expectedDump, $args); } public function testArgsStubWithExtraArgs($foo = 234) { $args = [new ArgsStub([123, 456], __FUNCTION__, __CLASS__)]; $expectedDump = <<<'EODUMP' array:1 [ 0 => { $foo: 123 ...: { 456 } } ] EODUMP; $this->assertDumpMatchesFormat($expectedDump, $args); } public function testArgsStubNoParamWithExtraArgs() { $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)]; $expectedDump = <<<'EODUMP' array:1 [ 0 => { 123 } ] EODUMP; $this->assertDumpMatchesFormat($expectedDump, $args); } public function testArgsStubWithClosure() { $args = [new ArgsStub([123], '{closure}', null)]; $expectedDump = <<<'EODUMP' array:1 [ 0 => { 123 } ] EODUMP; $this->assertDumpMatchesFormat($expectedDump, $args); } public function testLinkStub() { $var = [new LinkStub(__CLASS__, 0, __FILE__)]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']); $dump = $dumper->dump($cloner->cloneVar($var), true); $expectedDump = <<<'EODUMP' array:1 [ 0 => "Symfony\Component\VarDumper\Tests\Caster\StubCasterTest" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } public function testLinkStubWithNoFileLink() { $var = [new LinkStub('example.com', 0, 'http://example.com')]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']); $dump = $dumper->dump($cloner->cloneVar($var), true); $expectedDump = <<<'EODUMP' array:1 [ 0 => "example.com" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } public function testClassStub() { $var = [new ClassStub('hello', [FooInterface::class, 'foo'])]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']); $expectedDump = <<<'EODUMP' array:1 [ 0 => "hello(?stdClass $a, stdClass $b = null)" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } public function testClassStubWithNotExistingClass() { $var = [new ClassStub(NotExisting::class)]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dump = $dumper->dump($cloner->cloneVar($var), true); $expectedDump = <<<'EODUMP' array:1 [ 0 => "Symfony\Component\VarDumper\Tests\Caster\NotExisting" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } public function testClassStubWithNotExistingMethod() { $var = [new ClassStub('hello', [FooInterface::class, 'missing'])]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']); $expectedDump = <<<'EODUMP' array:1 [ 0 => "hello" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } public function testClassStubWithAnonymousClass() { $var = [new ClassStub(\get_class(new class() extends \Exception { }))]; $cloner = new VarCloner(); $dumper = new HtmlDumper(); $dumper->setDumpHeader(''); $dumper->setDumpBoundaries('', ''); $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']); $expectedDump = <<<'EODUMP' array:1 [ 0 => "Exception@anonymous" ] EODUMP; $this->assertStringMatchesFormat($expectedDump, $dump); } }