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: }