annotate vendor/symfony/var-dumper/Tests/Caster/CasterTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
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@17 25 private $referenceArray = [
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@17 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@17 51 return [
Chris@17 52 [
Chris@0 53 0,
Chris@17 54 [],
Chris@17 55 ],
Chris@17 56 [
Chris@0 57 Caster::EXCLUDE_PUBLIC,
Chris@17 58 [
Chris@0 59 'null' => null,
Chris@0 60 'empty' => false,
Chris@0 61 'public' => 'pub',
Chris@17 62 ],
Chris@17 63 ],
Chris@17 64 [
Chris@0 65 Caster::EXCLUDE_NULL,
Chris@17 66 [
Chris@0 67 'null' => null,
Chris@17 68 ],
Chris@17 69 ],
Chris@17 70 [
Chris@0 71 Caster::EXCLUDE_EMPTY,
Chris@17 72 [
Chris@0 73 'null' => null,
Chris@0 74 'empty' => false,
Chris@17 75 ],
Chris@17 76 ],
Chris@17 77 [
Chris@0 78 Caster::EXCLUDE_VIRTUAL,
Chris@17 79 [
Chris@0 80 "\0~\0virtual" => 'virt',
Chris@17 81 ],
Chris@17 82 ],
Chris@17 83 [
Chris@0 84 Caster::EXCLUDE_DYNAMIC,
Chris@17 85 [
Chris@0 86 "\0+\0dynamic" => 'dyn',
Chris@17 87 ],
Chris@17 88 ],
Chris@17 89 [
Chris@0 90 Caster::EXCLUDE_PROTECTED,
Chris@17 91 [
Chris@0 92 "\0*\0protected" => 'prot',
Chris@17 93 ],
Chris@17 94 ],
Chris@17 95 [
Chris@0 96 Caster::EXCLUDE_PRIVATE,
Chris@17 97 [
Chris@0 98 "\0Foo\0private" => 'priv',
Chris@17 99 ],
Chris@17 100 ],
Chris@17 101 [
Chris@0 102 Caster::EXCLUDE_VERBOSE,
Chris@17 103 [
Chris@0 104 'public' => 'pub',
Chris@0 105 "\0*\0protected" => 'prot',
Chris@17 106 ],
Chris@17 107 ['public', "\0*\0protected"],
Chris@17 108 ],
Chris@17 109 [
Chris@0 110 Caster::EXCLUDE_NOT_IMPORTANT,
Chris@17 111 [
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@17 117 ],
Chris@17 118 ['public', "\0*\0protected"],
Chris@17 119 ],
Chris@17 120 [
Chris@0 121 Caster::EXCLUDE_VIRTUAL | Caster::EXCLUDE_DYNAMIC,
Chris@17 122 [
Chris@0 123 "\0~\0virtual" => 'virt',
Chris@0 124 "\0+\0dynamic" => 'dyn',
Chris@17 125 ],
Chris@17 126 ],
Chris@17 127 [
Chris@0 128 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_VERBOSE,
Chris@0 129 $this->referenceArray,
Chris@17 130 ['public', "\0*\0protected"],
Chris@17 131 ],
Chris@17 132 [
Chris@0 133 Caster::EXCLUDE_NOT_IMPORTANT | Caster::EXCLUDE_EMPTY,
Chris@17 134 [
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@17 141 ],
Chris@17 142 ['public', 'empty'],
Chris@17 143 ],
Chris@17 144 [
Chris@0 145 Caster::EXCLUDE_VERBOSE | Caster::EXCLUDE_EMPTY | Caster::EXCLUDE_STRICT,
Chris@17 146 [
Chris@0 147 'empty' => false,
Chris@17 148 ],
Chris@17 149 ['public', 'empty'],
Chris@17 150 ],
Chris@17 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 }