Chris@0: Chris@0: * Chris@0: * For the full copyright and license information, please view the LICENSE Chris@0: * file that was distributed with this source code. Chris@0: */ Chris@0: Chris@0: namespace Symfony\Component\VarDumper\Tests\Caster; Chris@0: Chris@0: use PHPUnit\Framework\TestCase; Chris@0: use Symfony\Component\VarDumper\Caster\ArgsStub; Chris@0: use Symfony\Component\VarDumper\Caster\ClassStub; Chris@0: use Symfony\Component\VarDumper\Caster\LinkStub; Chris@0: use Symfony\Component\VarDumper\Cloner\VarCloner; Chris@0: use Symfony\Component\VarDumper\Dumper\HtmlDumper; Chris@0: use Symfony\Component\VarDumper\Test\VarDumperTestTrait; Chris@0: use Symfony\Component\VarDumper\Tests\Fixtures\FooInterface; Chris@0: Chris@0: class StubCasterTest extends TestCase Chris@0: { Chris@0: use VarDumperTestTrait; Chris@0: Chris@0: public function testArgsStubWithDefaults($foo = 234, $bar = 456) Chris@0: { Chris@17: $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)]; Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => { Chris@0: $foo: 123 Chris@0: } Chris@0: ] Chris@0: EODUMP; Chris@0: Chris@0: $this->assertDumpMatchesFormat($expectedDump, $args); Chris@0: } Chris@0: Chris@0: public function testArgsStubWithExtraArgs($foo = 234) Chris@0: { Chris@17: $args = [new ArgsStub([123, 456], __FUNCTION__, __CLASS__)]; Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => { Chris@0: $foo: 123 Chris@0: ...: { Chris@0: 456 Chris@0: } Chris@0: } Chris@0: ] Chris@0: EODUMP; Chris@0: Chris@0: $this->assertDumpMatchesFormat($expectedDump, $args); Chris@0: } Chris@0: Chris@0: public function testArgsStubNoParamWithExtraArgs() Chris@0: { Chris@17: $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)]; Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => { Chris@0: 123 Chris@0: } Chris@0: ] Chris@0: EODUMP; Chris@0: Chris@0: $this->assertDumpMatchesFormat($expectedDump, $args); Chris@0: } Chris@0: Chris@0: public function testArgsStubWithClosure() Chris@0: { Chris@17: $args = [new ArgsStub([123], '{closure}', null)]; Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => { Chris@0: 123 Chris@0: } Chris@0: ] Chris@0: EODUMP; Chris@0: Chris@0: $this->assertDumpMatchesFormat($expectedDump, $args); Chris@0: } Chris@0: Chris@0: public function testLinkStub() Chris@0: { Chris@17: $var = [new LinkStub(__CLASS__, 0, __FILE__)]; Chris@0: Chris@0: $cloner = new VarCloner(); Chris@0: $dumper = new HtmlDumper(); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@17: $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']); Chris@0: $dump = $dumper->dump($cloner->cloneVar($var), true); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@12: 0 => "Symfony\Component\VarDumper\Tests\Caster\StubCasterTest" Chris@12: ] Chris@12: Chris@12: EODUMP; Chris@12: Chris@12: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@12: } Chris@12: Chris@12: public function testLinkStubWithNoFileLink() Chris@12: { Chris@17: $var = [new LinkStub('example.com', 0, 'http://example.com')]; Chris@12: Chris@12: $cloner = new VarCloner(); Chris@12: $dumper = new HtmlDumper(); Chris@12: $dumper->setDumpHeader(''); Chris@12: $dumper->setDumpBoundaries('', ''); Chris@17: $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']); Chris@12: $dump = $dumper->dump($cloner->cloneVar($var), true); Chris@12: Chris@12: $expectedDump = <<<'EODUMP' Chris@12: array:1 [ Chris@12: 0 => "example.com" Chris@0: ] Chris@0: Chris@0: EODUMP; Chris@0: Chris@0: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@0: } Chris@0: Chris@0: public function testClassStub() Chris@0: { Chris@17: $var = [new ClassStub('hello', [FooInterface::class, 'foo'])]; Chris@0: Chris@0: $cloner = new VarCloner(); Chris@0: $dumper = new HtmlDumper(); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@17: $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@12: 0 => "hello" Chris@0: ] Chris@0: Chris@0: EODUMP; Chris@0: Chris@0: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@0: } Chris@0: Chris@0: public function testClassStubWithNotExistingClass() Chris@0: { Chris@17: $var = [new ClassStub(NotExisting::class)]; Chris@0: Chris@0: $cloner = new VarCloner(); Chris@0: $dumper = new HtmlDumper(); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@0: $dump = $dumper->dump($cloner->cloneVar($var), true); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => "Symfony\Component\VarDumper\Tests\Caster\NotExisting" Chris@0: ] Chris@0: Chris@0: EODUMP; Chris@0: Chris@0: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@0: } Chris@0: Chris@0: public function testClassStubWithNotExistingMethod() Chris@0: { Chris@17: $var = [new ClassStub('hello', [FooInterface::class, 'missing'])]; Chris@0: Chris@0: $cloner = new VarCloner(); Chris@0: $dumper = new HtmlDumper(); Chris@0: $dumper->setDumpHeader(''); Chris@0: $dumper->setDumpBoundaries('', ''); Chris@17: $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@12: 0 => "hello" Chris@0: ] Chris@0: Chris@0: EODUMP; Chris@0: Chris@0: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@0: } Chris@0: }