* * 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\Caster; use Symfony\Component\VarDumper\Test\VarDumperTestTrait; /** * @author Nicolas Grekas */ class CasterTest extends TestCase { use VarDumperTestTrait; private $referenceArray = array( 'null' => null, 'empty' => false, 'public' => 'pub', "\0~\0virtual" => 'virt', "\0+\0dynamic" => 'dyn', "\0*\0protected" => 'prot', "\0Foo\0private" => 'priv', ); /** * @dataProvider provideFilter */ public function testFilter($filter, $expectedDiff, $listedProperties = null) { if (null === $listedProperties) { $filteredArray = Caster::filter($this->referenceArray, $filter); } else { $filteredArray = Caster::filter($this->referenceArray, $filter, $listedProperties); } $this->assertSame($expectedDiff, array_diff_assoc($this->referenceArray, $filteredArray)); } public function provideFilter() { return array( array( 0, array(), ), array( Caster::EXCLUDE_PUBLIC, array( 'null' => null, 'empty' => false, 'public' => 'pub', ), ), array( Caster::EXCLUDE_NULL, array( 'null' => null, ), ), array( Caster::EXCLUDE_EMPTY, array( 'null' => null, 'empty' => false, ), ), array( Caster::EXCLUDE_VIRTUAL, array( "\0~\0virtual" => 'virt', ), ), array( Caster::EXCLUDE_DYNAMIC, array( "\0+\0dynamic" => 'dyn', ), ), array( Caster::EXCLUDE_PROTECTED, array( "\0*\0protected" => 'prot', ), ), array( Caster::EXCLUDE_PRIVATE, array( "\0Foo\0private" => 'priv', ), ), array( Caster::EXCLUDE_VERBOSE, array( 'public' => 'pub', "\0*\0protected" => 'prot', ), array('public', "\0*\0protected"), ), array( Caster::EXCLUDE_NOT_IMPORTANT, array( 'null' => null, 'empty' => false, "\0~\0virtual" => 'virt', "\0+\0dynamic" => 'dyn', "\0Foo\0private" => 'priv', ), array('public', "\0*\0protected"), ), array( Caster::EXCLUDE_VIRTUAL | Caster::EXCLUDE_DYNAMIC, array( "\0~\0virtual" => 'virt', "\0+\0dynamic" => 'dyn', ), ), array( Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_VERBOSE, $this->referenceArray, array('public', "\0*\0protected"), ), array( Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY, array( 'null' => null, 'empty' => false, "\0~\0virtual" => 'virt', "\0+\0dynamic" => 'dyn', "\0*\0protected" => 'prot', "\0Foo\0private" => 'priv', ), array('public', 'empty'), ), array( Caster::EXCLUDE_VERBOSE | Caster::EXCLUDE_EMPTY | Caster::EXCLUDE_STRICT, array( 'empty' => false, ), array('public', 'empty'), ), ); } /** * @requires PHP 7.0 */ public function testAnonymousClass() { $c = eval('return new class extends stdClass { private $foo = "foo"; };'); $this->assertDumpMatchesFormat( <<<'EOTXT' stdClass@anonymous { -foo: "foo" } EOTXT , $c ); $c = eval('return new class { private $foo = "foo"; };'); $this->assertDumpMatchesFormat( <<<'EOTXT' @anonymous { -foo: "foo" } EOTXT , $c ); } } __halt_compiler();----SIGNATURE:----C+qa0SqlOODSOWhhKDwxELVUJMm8tl5RyBu/3p8dwUTbFFFpM9LmMnwD4Jzs91BTG9/kk/WBjiXdJa3tlBAIq9FF+0h1MX0l6CerRd9467HZMnnlZtaAHjb+PsKFF6MU8ucZraL7CvSzZ8ISgMkKIztLd022zd9DLOERB3EgSynuOSqRe+DHv2EOIxSdrmwbP7IJdj43y9JR8oN3VY+HfH2xq2FrTUouH6IglQT3z0QnFrCpIUcJfzHc0BHE6cyNIcbhfn1+B9egzK/oIx4W67GAmksi0FofdXXjYcn59LC/kMnV7mesYf1fuaGJzwK4++5CViku3FZT9HLusqpMVHND8k2zlmN3Xact7BTwH9byX4u4DXKWQutBlb/CmienHp7gYGy2UMghH+dXrFdI77dsu25O5M6E5FCVZ6J8qOzXu09Qxo/L91xOyOAjGsklDau74Ovb4Pr3e/2p62e9a9CZpIma914kCfTJZNx6NuBs9cRfY/rFcJij3AWhT/7xWSvt98jr5dUNM9z0kObuZcigM0orHVYfsNHmiiM4y++VTl8mxL/2BuWN8won9dej2KTMYz3cRsThmti/zIbj/nEDZUXPazPQAUu5JNs7aSJAkjlZeBKK1UZ0DnWcSVcHNyK06YpGk/GPNmL4xaUKygEzJT8Xuc5mBvneaBK1ubw=----ATTACHMENT:----NjE3MDc3ODc3MjE5OTQ5NiA4OTUxMTE3MDgwNDk3OTUwIDYyODIzODI2MzcyMjcyMTY=