* * 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:----ug9m1n8nM4v4NTX/g0JzyAT7gDuTKYq1D5VUwgznMVSThNQdpkL3/rYNHVcHWVl6HTiXY91bxb8DlorajKtXdNlaXND82+9CgUbi7+HlocWI2HBBncLQXxdyMjyA0YgGNimrAahSlK2fNneN2ExZ/lz05v6Mu4eHkDSv/yWQGdUKwc0qZV04Yt20xJAgLkuR0bMjiHP/LXRL01DvdzW70pizm4J4oiDQN7iMcEGnOwBoXREMi3G9oWDnbQkCNUMt5XXtm82KzgtGFkmiZx5e+3leNSiR6N1x70E/WL2qekasBM3NnLPwf5j5O+G6M7/A77o4pLNOxnpTkWIMbzSRdvfKAILXHMEkGWhSRztjhmkdxJtKLwm3AFWGxfhkiuyZk0BVUJWyxIXfkI0osfxh/yw3aNJtJiRXlDNc1UnwjvP3MkKTccqjMbVSbYTJeFHVlzqSIqsbtKDFYwiHjfy4dyc52ufJHn6X1V/d7XeOboousZu2/QKW5xKgLQWf1/HwN2B0cMlOYaPMU+jK7uIwIk4ltu1leRNncDgvND7TeG78b7m+nWZ6q8oF3vcmFeUXcadGeR/rpGL8vGVlligx9ewg/jTsv2aqBse7HsLtbZDwDBE2lHexJg5TDKfC+vGb6ZMBzmmc3ggZRmXUZ5A8R6kR+lrxcxuXw8WMxHRxiB0=----ATTACHMENT:----OTk4NTg2MjM3MzU3MTA4MCA5MjAzNDA1MjE5ODEwNzM1IDY3NzY1NjU4ODkyODM0MDA=