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\ArgsStub;
|
Chris@0
|
16 use Symfony\Component\VarDumper\Caster\ClassStub;
|
Chris@0
|
17 use Symfony\Component\VarDumper\Caster\LinkStub;
|
Chris@0
|
18 use Symfony\Component\VarDumper\Cloner\VarCloner;
|
Chris@0
|
19 use Symfony\Component\VarDumper\Dumper\HtmlDumper;
|
Chris@0
|
20 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
|
Chris@0
|
21 use Symfony\Component\VarDumper\Tests\Fixtures\FooInterface;
|
Chris@0
|
22
|
Chris@0
|
23 class StubCasterTest extends TestCase
|
Chris@0
|
24 {
|
Chris@0
|
25 use VarDumperTestTrait;
|
Chris@0
|
26
|
Chris@0
|
27 public function testArgsStubWithDefaults($foo = 234, $bar = 456)
|
Chris@0
|
28 {
|
Chris@17
|
29 $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)];
|
Chris@0
|
30
|
Chris@0
|
31 $expectedDump = <<<'EODUMP'
|
Chris@0
|
32 array:1 [
|
Chris@0
|
33 0 => {
|
Chris@0
|
34 $foo: 123
|
Chris@0
|
35 }
|
Chris@0
|
36 ]
|
Chris@0
|
37 EODUMP;
|
Chris@0
|
38
|
Chris@0
|
39 $this->assertDumpMatchesFormat($expectedDump, $args);
|
Chris@0
|
40 }
|
Chris@0
|
41
|
Chris@0
|
42 public function testArgsStubWithExtraArgs($foo = 234)
|
Chris@0
|
43 {
|
Chris@17
|
44 $args = [new ArgsStub([123, 456], __FUNCTION__, __CLASS__)];
|
Chris@0
|
45
|
Chris@0
|
46 $expectedDump = <<<'EODUMP'
|
Chris@0
|
47 array:1 [
|
Chris@0
|
48 0 => {
|
Chris@0
|
49 $foo: 123
|
Chris@0
|
50 ...: {
|
Chris@0
|
51 456
|
Chris@0
|
52 }
|
Chris@0
|
53 }
|
Chris@0
|
54 ]
|
Chris@0
|
55 EODUMP;
|
Chris@0
|
56
|
Chris@0
|
57 $this->assertDumpMatchesFormat($expectedDump, $args);
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 public function testArgsStubNoParamWithExtraArgs()
|
Chris@0
|
61 {
|
Chris@17
|
62 $args = [new ArgsStub([123], __FUNCTION__, __CLASS__)];
|
Chris@0
|
63
|
Chris@0
|
64 $expectedDump = <<<'EODUMP'
|
Chris@0
|
65 array:1 [
|
Chris@0
|
66 0 => {
|
Chris@0
|
67 123
|
Chris@0
|
68 }
|
Chris@0
|
69 ]
|
Chris@0
|
70 EODUMP;
|
Chris@0
|
71
|
Chris@0
|
72 $this->assertDumpMatchesFormat($expectedDump, $args);
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 public function testArgsStubWithClosure()
|
Chris@0
|
76 {
|
Chris@17
|
77 $args = [new ArgsStub([123], '{closure}', null)];
|
Chris@0
|
78
|
Chris@0
|
79 $expectedDump = <<<'EODUMP'
|
Chris@0
|
80 array:1 [
|
Chris@0
|
81 0 => {
|
Chris@0
|
82 123
|
Chris@0
|
83 }
|
Chris@0
|
84 ]
|
Chris@0
|
85 EODUMP;
|
Chris@0
|
86
|
Chris@0
|
87 $this->assertDumpMatchesFormat($expectedDump, $args);
|
Chris@0
|
88 }
|
Chris@0
|
89
|
Chris@0
|
90 public function testLinkStub()
|
Chris@0
|
91 {
|
Chris@17
|
92 $var = [new LinkStub(__CLASS__, 0, __FILE__)];
|
Chris@0
|
93
|
Chris@0
|
94 $cloner = new VarCloner();
|
Chris@0
|
95 $dumper = new HtmlDumper();
|
Chris@0
|
96 $dumper->setDumpHeader('<foo></foo>');
|
Chris@0
|
97 $dumper->setDumpBoundaries('<bar>', '</bar>');
|
Chris@17
|
98 $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']);
|
Chris@0
|
99 $dump = $dumper->dump($cloner->cloneVar($var), true);
|
Chris@0
|
100
|
Chris@0
|
101 $expectedDump = <<<'EODUMP'
|
Chris@0
|
102 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
|
Chris@12
|
103 <span class=sf-dump-index>0</span> => "<a href="%sStubCasterTest.php:0" rel="noopener noreferrer"><span class=sf-dump-str title="55 characters">Symfony\Component\VarDumper\Tests\Caster\StubCasterTest</span></a>"
|
Chris@12
|
104 </samp>]
|
Chris@12
|
105 </bar>
|
Chris@12
|
106 EODUMP;
|
Chris@12
|
107
|
Chris@12
|
108 $this->assertStringMatchesFormat($expectedDump, $dump);
|
Chris@12
|
109 }
|
Chris@12
|
110
|
Chris@12
|
111 public function testLinkStubWithNoFileLink()
|
Chris@12
|
112 {
|
Chris@17
|
113 $var = [new LinkStub('example.com', 0, 'http://example.com')];
|
Chris@12
|
114
|
Chris@12
|
115 $cloner = new VarCloner();
|
Chris@12
|
116 $dumper = new HtmlDumper();
|
Chris@12
|
117 $dumper->setDumpHeader('<foo></foo>');
|
Chris@12
|
118 $dumper->setDumpBoundaries('<bar>', '</bar>');
|
Chris@17
|
119 $dumper->setDisplayOptions(['fileLinkFormat' => '%f:%l']);
|
Chris@12
|
120 $dump = $dumper->dump($cloner->cloneVar($var), true);
|
Chris@12
|
121
|
Chris@12
|
122 $expectedDump = <<<'EODUMP'
|
Chris@12
|
123 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
|
Chris@12
|
124 <span class=sf-dump-index>0</span> => "<a href="http://example.com" target="_blank" rel="noopener noreferrer"><span class=sf-dump-str title="11 characters">example.com</span></a>"
|
Chris@0
|
125 </samp>]
|
Chris@0
|
126 </bar>
|
Chris@0
|
127 EODUMP;
|
Chris@0
|
128
|
Chris@0
|
129 $this->assertStringMatchesFormat($expectedDump, $dump);
|
Chris@0
|
130 }
|
Chris@0
|
131
|
Chris@0
|
132 public function testClassStub()
|
Chris@0
|
133 {
|
Chris@17
|
134 $var = [new ClassStub('hello', [FooInterface::class, 'foo'])];
|
Chris@0
|
135
|
Chris@0
|
136 $cloner = new VarCloner();
|
Chris@0
|
137 $dumper = new HtmlDumper();
|
Chris@0
|
138 $dumper->setDumpHeader('<foo></foo>');
|
Chris@0
|
139 $dumper->setDumpBoundaries('<bar>', '</bar>');
|
Chris@17
|
140 $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']);
|
Chris@0
|
141
|
Chris@0
|
142 $expectedDump = <<<'EODUMP'
|
Chris@0
|
143 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
|
Chris@12
|
144 <span class=sf-dump-index>0</span> => "<a href="%sFooInterface.php:10" rel="noopener noreferrer"><span class=sf-dump-str title="5 characters">hello</span></a>"
|
Chris@0
|
145 </samp>]
|
Chris@0
|
146 </bar>
|
Chris@0
|
147 EODUMP;
|
Chris@0
|
148
|
Chris@0
|
149 $this->assertStringMatchesFormat($expectedDump, $dump);
|
Chris@0
|
150 }
|
Chris@0
|
151
|
Chris@0
|
152 public function testClassStubWithNotExistingClass()
|
Chris@0
|
153 {
|
Chris@17
|
154 $var = [new ClassStub(NotExisting::class)];
|
Chris@0
|
155
|
Chris@0
|
156 $cloner = new VarCloner();
|
Chris@0
|
157 $dumper = new HtmlDumper();
|
Chris@0
|
158 $dumper->setDumpHeader('<foo></foo>');
|
Chris@0
|
159 $dumper->setDumpBoundaries('<bar>', '</bar>');
|
Chris@0
|
160 $dump = $dumper->dump($cloner->cloneVar($var), true);
|
Chris@0
|
161
|
Chris@0
|
162 $expectedDump = <<<'EODUMP'
|
Chris@0
|
163 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
|
Chris@0
|
164 <span class=sf-dump-index>0</span> => "<span class=sf-dump-str title="Symfony\Component\VarDumper\Tests\Caster\NotExisting
|
Chris@0
|
165 52 characters"><span class="sf-dump-ellipsis sf-dump-ellipsis-class">Symfony\Component\VarDumper\Tests\Caster</span><span class=sf-dump-ellipsis>\</span>NotExisting</span>"
|
Chris@0
|
166 </samp>]
|
Chris@0
|
167 </bar>
|
Chris@0
|
168 EODUMP;
|
Chris@0
|
169
|
Chris@0
|
170 $this->assertStringMatchesFormat($expectedDump, $dump);
|
Chris@0
|
171 }
|
Chris@0
|
172
|
Chris@0
|
173 public function testClassStubWithNotExistingMethod()
|
Chris@0
|
174 {
|
Chris@17
|
175 $var = [new ClassStub('hello', [FooInterface::class, 'missing'])];
|
Chris@0
|
176
|
Chris@0
|
177 $cloner = new VarCloner();
|
Chris@0
|
178 $dumper = new HtmlDumper();
|
Chris@0
|
179 $dumper->setDumpHeader('<foo></foo>');
|
Chris@0
|
180 $dumper->setDumpBoundaries('<bar>', '</bar>');
|
Chris@17
|
181 $dump = $dumper->dump($cloner->cloneVar($var), true, ['fileLinkFormat' => '%f:%l']);
|
Chris@0
|
182
|
Chris@0
|
183 $expectedDump = <<<'EODUMP'
|
Chris@0
|
184 <foo></foo><bar><span class=sf-dump-note>array:1</span> [<samp>
|
Chris@12
|
185 <span class=sf-dump-index>0</span> => "<a href="%sFooInterface.php:5" rel="noopener noreferrer"><span class=sf-dump-str title="5 characters">hello</span></a>"
|
Chris@0
|
186 </samp>]
|
Chris@0
|
187 </bar>
|
Chris@0
|
188 EODUMP;
|
Chris@0
|
189
|
Chris@0
|
190 $this->assertStringMatchesFormat($expectedDump, $dump);
|
Chris@0
|
191 }
|
Chris@0
|
192 }
|