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@0: $args = array(new ArgsStub(array(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@0: $args = array(new ArgsStub(array(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@0: $args = array(new ArgsStub(array(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@0: $args = array(new ArgsStub(array(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@0: $var = array(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@0: $dumper->setDisplayOptions(array('fileLinkFormat' => '%f:%l')); 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\StubCasterTest" 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@0: $var = array(new ClassStub('hello', array(FooInterface::class, 'foo'))); 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, array('fileLinkFormat' => '%f:%l')); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 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@0: $var = array(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@0: $var = array(new ClassStub('hello', array(FooInterface::class, 'missing'))); 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, array('fileLinkFormat' => '%f:%l')); Chris@0: Chris@0: $expectedDump = <<<'EODUMP' Chris@0: array:1 [ Chris@0: 0 => "hello" Chris@0: ] Chris@0: Chris@0: EODUMP; Chris@0: Chris@0: $this->assertStringMatchesFormat($expectedDump, $dump); Chris@0: } Chris@0: }