annotate vendor/symfony/var-dumper/Tests/Caster/CasterTest.php @ 8:50b0d041100e

Further files for download
author Chris Cannam
date Mon, 05 Feb 2018 10:56:40 +0000
parents 4c8ae668cc8c
children 129ea1e6d783
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\VarDumper\Tests\Caster;
Chris@0 13
Chris@0 14 use PHPUnit\Framework\TestCase;
Chris@0 15 use Symfony\Component\VarDumper\Caster\Caster;
Chris@0 16 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
Chris@0 17
Chris@0 18 /**
Chris@0 19 * @author Nicolas Grekas <p@tchwork.com>
Chris@0 20 */
Chris@0 21 class CasterTest extends TestCase
Chris@0 22 {
Chris@0 23 use VarDumperTestTrait;
Chris@0 24
Chris@0 25 private $referenceArray = array(
Chris@0 26 'null' => null,
Chris@0 27 'empty' => false,
Chris@0 28 'public' => 'pub',
Chris@0 29 "\0~\0virtual" => 'virt',
Chris@0 30 "\0+\0dynamic" => 'dyn',
Chris@0 31 "\0*\0protected" => 'prot',
Chris@0 32 "\0Foo\0private" => 'priv',
Chris@0 33 );
Chris@0 34
Chris@0 35 /**
Chris@0 36 * @dataProvider provideFilter
Chris@0 37 */
Chris@0 38 public function testFilter($filter, $expectedDiff, $listedProperties = null)
Chris@0 39 {
Chris@0 40 if (null === $listedProperties) {
Chris@0 41 $filteredArray = Caster::filter($this->referenceArray, $filter);
Chris@0 42 } else {
Chris@0 43 $filteredArray = Caster::filter($this->referenceArray, $filter, $listedProperties);
Chris@0 44 }
Chris@0 45
Chris@0 46 $this->assertSame($expectedDiff, array_diff_assoc($this->referenceArray, $filteredArray));
Chris@0 47 }
Chris@0 48
Chris@0 49 public function provideFilter()
Chris@0 50 {
Chris@0 51 return array(
Chris@0 52 array(
Chris@0 53 0,
Chris@0 54 array(),
Chris@0 55 ),
Chris@0 56 array(
Chris@0 57 Caster::EXCLUDE_PUBLIC,
Chris@0 58 array(
Chris@0 59 'null' => null,
Chris@0 60 'empty' => false,
Chris@0 61 'public' => 'pub',
Chris@0 62 ),
Chris@0 63 ),
Chris@0 64 array(
Chris@0 65 Caster::EXCLUDE_NULL,
Chris@0 66 array(
Chris@0 67 'null' => null,
Chris@0 68 ),
Chris@0 69 ),
Chris@0 70 array(
Chris@0 71 Caster::EXCLUDE_EMPTY,
Chris@0 72 array(
Chris@0 73 'null' => null,
Chris@0 74 'empty' => false,
Chris@0 75 ),
Chris@0 76 ),
Chris@0 77 array(
Chris@0 78 Caster::EXCLUDE_VIRTUAL,
Chris@0 79 array(
Chris@0 80 "\0~\0virtual" => 'virt',
Chris@0 81 ),
Chris@0 82 ),
Chris@0 83 array(
Chris@0 84 Caster::EXCLUDE_DYNAMIC,
Chris@0 85 array(
Chris@0 86 "\0+\0dynamic" => 'dyn',
Chris@0 87 ),
Chris@0 88 ),
Chris@0 89 array(
Chris@0 90 Caster::EXCLUDE_PROTECTED,
Chris@0 91 array(
Chris@0 92 "\0*\0protected" => 'prot',
Chris@0 93 ),
Chris@0 94 ),
Chris@0 95 array(
Chris@0 96 Caster::EXCLUDE_PRIVATE,
Chris@0 97 array(
Chris@0 98 "\0Foo\0private" => 'priv',
Chris@0 99 ),
Chris@0 100 ),
Chris@0 101 array(
Chris@0 102 Caster::EXCLUDE_VERBOSE,
Chris@0 103 array(
Chris@0 104 'public' => 'pub',
Chris@0 105 "\0*\0protected" => 'prot',
Chris@0 106 ),
Chris@0 107 array('public', "\0*\0protected"),
Chris@0 108 ),
Chris@0 109 array(
Chris@0 110 Caster::EXCLUDE_NOT_IMPORTANT,
Chris@0 111 array(
Chris@0 112 'null' => null,
Chris@0 113 'empty' => false,
Chris@0 114 "\0~\0virtual" => 'virt',
Chris@0 115 "\0+\0dynamic" => 'dyn',
Chris@0 116 "\0Foo\0private" => 'priv',
Chris@0 117 ),
Chris@0 118 array('public', "\0*\0protected"),
Chris@0 119 ),
Chris@0 120 array(
Chris@0 121 Caster::EXCLUDE_VIRTUAL | Caster::EXCLUDE_DYNAMIC,
Chris@0 122 array(
Chris@0 123 "\0~\0virtual" => 'virt',
Chris@0 124 "\0+\0dynamic" => 'dyn',
Chris@0 125 ),
Chris@0 126 ),
Chris@0 127 array(
Chris@0 128 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_VERBOSE,
Chris@0 129 $this->referenceArray,
Chris@0 130 array('public', "\0*\0protected"),
Chris@0 131 ),
Chris@0 132 array(
Chris@0 133 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY,
Chris@0 134 array(
Chris@0 135 'null' => null,
Chris@0 136 'empty' => false,
Chris@0 137 "\0~\0virtual" => 'virt',
Chris@0 138 "\0+\0dynamic" => 'dyn',
Chris@0 139 "\0*\0protected" => 'prot',
Chris@0 140 "\0Foo\0private" => 'priv',
Chris@0 141 ),
Chris@0 142 array('public', 'empty'),
Chris@0 143 ),
Chris@0 144 array(
Chris@0 145 Caster::EXCLUDE_VERBOSE | Caster::EXCLUDE_EMPTY | Caster::EXCLUDE_STRICT,
Chris@0 146 array(
Chris@0 147 'empty' => false,
Chris@0 148 ),
Chris@0 149 array('public', 'empty'),
Chris@0 150 ),
Chris@0 151 );
Chris@0 152 }
Chris@0 153
Chris@0 154 /**
Chris@0 155 * @requires PHP 7.0
Chris@0 156 */
Chris@0 157 public function testAnonymousClass()
Chris@0 158 {
Chris@0 159 $c = eval('return new class extends stdClass { private $foo = "foo"; };');
Chris@0 160
Chris@0 161 $this->assertDumpMatchesFormat(
Chris@0 162 <<<'EOTXT'
Chris@0 163 stdClass@anonymous {
Chris@0 164 -foo: "foo"
Chris@0 165 }
Chris@0 166 EOTXT
Chris@0 167 , $c
Chris@0 168 );
Chris@0 169
Chris@0 170 $c = eval('return new class { private $foo = "foo"; };');
Chris@0 171
Chris@0 172 $this->assertDumpMatchesFormat(
Chris@0 173 <<<'EOTXT'
Chris@0 174 @anonymous {
Chris@0 175 -foo: "foo"
Chris@0 176 }
Chris@0 177 EOTXT
Chris@0 178 , $c
Chris@0 179 );
Chris@0 180 }
Chris@0 181 }