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