* * 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:----ZvoCj+UlDELGQobZE50l+5+nh0cGcz7kMhs1rM4kR+97RXTT1IYwDI0mPN7l3wDHP6WAWwYLxM1u7rJhEmvcelepP8kCTcbL0Qquh1eYliujVXjS1rejJcpgNl79a8KF8gjFj/SkFuw+Aim3UlRNWfUCwxxVLbF5cS6HOFeeyc44ZFiHv240nHNAMfE332E3Hh/vTJr000VjVQNCGYrtpEuNEnjxDigVWLJ9IL8mRmsLXqlbFQOCHpAuK1eVfm8u7x4m2Edare5+YHzQj8V7/h3hrnQiWGjVSdASKfF1maLaqM7qh60BHGo3qhW5jupMoFPadD6/wUc+HqYsCu9MNRndc1GJrzIZliLLN/P5WmdZkfzWub4nE0QD/gMdvb90NRKjnOB27nzBWQwx0bQdPSsSK5GFI4S5zO76KjK5c1E8n/IvqAe0ydzPY/c1yLwwsEQ0C4x8yDiZvj5Hj9vHmObJabeJYIx9rfztRjsWqxA05CwkCZYepwsXEoy+Gmq4WnjRG7cwYsoBEEI6FSubD6agi1sYojd9MCxn2XwaU+wHr+5jmz2nN50geMb/+xtzWwqUSPKu4Y5rEFoZw+Jt09OB3y5nPEwwm8roKwV3JJhWUkKYzK9Xi10D46/OAjx8R63/F//B0A/ICun9UqkWsEnv2abTacrrzEqQe08AkIg=----ATTACHMENT:----ODQxMTI2NTA1ODIyNDA1OSAyNDQ0NzY1OTE2OTIyNzkwIDk5ODE0MDgzNjA4MzM5MTc=