Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / symfony / var-dumper / Tests / Caster / SplCasterTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\VarDumper\Tests\Caster;
13
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
16
17 /**
18  * @author Grégoire Pineau <lyrixx@lyrixx.info>
19  */
20 class SplCasterTest extends TestCase
21 {
22     use VarDumperTestTrait;
23
24     public function getCastFileInfoTests()
25     {
26         return array(
27             array(__FILE__, <<<'EOTXT'
28 SplFileInfo {
29 %Apath: "%sCaster"
30   filename: "SplCasterTest.php"
31   basename: "SplCasterTest.php"
32   pathname: "%sSplCasterTest.php"
33   extension: "php"
34   realPath: "%sSplCasterTest.php"
35   aTime: %s-%s-%d %d:%d:%d
36   mTime: %s-%s-%d %d:%d:%d
37   cTime: %s-%s-%d %d:%d:%d
38   inode: %d
39   size: %d
40   perms: 0%d
41   owner: %d
42   group: %d
43   type: "file"
44   writable: true
45   readable: true
46   executable: false
47   file: true
48   dir: false
49   link: false
50 %A}
51 EOTXT
52             ),
53             array('https://google.com/about', <<<'EOTXT'
54 SplFileInfo {
55 %Apath: "https://google.com"
56   filename: "about"
57   basename: "about"
58   pathname: "https://google.com/about"
59   extension: ""
60   realPath: false
61 %A}
62 EOTXT
63             ),
64         );
65     }
66
67     /** @dataProvider getCastFileInfoTests */
68     public function testCastFileInfo($file, $dump)
69     {
70         $this->assertDumpMatchesFormat($dump, new \SplFileInfo($file));
71     }
72
73     public function testCastFileObject()
74     {
75         $var = new \SplFileObject(__FILE__);
76         $var->setFlags(\SplFileObject::DROP_NEW_LINE | \SplFileObject::SKIP_EMPTY);
77         $dump = <<<'EOTXT'
78 SplFileObject {
79 %Apath: "%sCaster"
80   filename: "SplCasterTest.php"
81   basename: "SplCasterTest.php"
82   pathname: "%sSplCasterTest.php"
83   extension: "php"
84   realPath: "%sSplCasterTest.php"
85   aTime: %s-%s-%d %d:%d:%d
86   mTime: %s-%s-%d %d:%d:%d
87   cTime: %s-%s-%d %d:%d:%d
88   inode: %d
89   size: %d
90   perms: 0%d
91   owner: %d
92   group: %d
93   type: "file"
94   writable: true
95   readable: true
96   executable: false
97   file: true
98   dir: false
99   link: false
100 %AcsvControl: array:%d [
101     0 => ","
102     1 => """
103 %A]
104   flags: DROP_NEW_LINE|SKIP_EMPTY
105   maxLineLen: 0
106   fstat: array:26 [
107     "dev" => %d
108     "ino" => %d
109     "nlink" => %d
110     "rdev" => 0
111     "blksize" => %i
112     "blocks" => %i
113      …20
114   ]
115   eof: false
116   key: 0
117 }
118 EOTXT;
119         $this->assertDumpMatchesFormat($dump, $var);
120     }
121
122     /**
123      * @dataProvider provideCastSplDoublyLinkedList
124      */
125     public function testCastSplDoublyLinkedList($modeValue, $modeDump)
126     {
127         $var = new \SplDoublyLinkedList();
128         $var->setIteratorMode($modeValue);
129         $dump = <<<EOTXT
130 SplDoublyLinkedList {
131 %Amode: $modeDump
132   dllist: []
133 }
134 EOTXT;
135         $this->assertDumpMatchesFormat($dump, $var);
136     }
137
138     public function provideCastSplDoublyLinkedList()
139     {
140         return array(
141             array(\SplDoublyLinkedList::IT_MODE_FIFO, 'IT_MODE_FIFO | IT_MODE_KEEP'),
142             array(\SplDoublyLinkedList::IT_MODE_LIFO, 'IT_MODE_LIFO | IT_MODE_KEEP'),
143             array(\SplDoublyLinkedList::IT_MODE_FIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_FIFO | IT_MODE_DELETE'),
144             array(\SplDoublyLinkedList::IT_MODE_LIFO | \SplDoublyLinkedList::IT_MODE_DELETE, 'IT_MODE_LIFO | IT_MODE_DELETE'),
145         );
146     }
147
148     public function testCastObjectStorageIsntModified()
149     {
150         $var = new \SplObjectStorage();
151         $var->attach(new \stdClass());
152         $var->rewind();
153         $current = $var->current();
154
155         $this->assertDumpMatchesFormat('%A', $var);
156         $this->assertSame($current, $var->current());
157     }
158
159     public function testCastObjectStorageDumpsInfo()
160     {
161         $var = new \SplObjectStorage();
162         $var->attach(new \stdClass(), new \DateTime());
163
164         $this->assertDumpMatchesFormat('%ADateTime%A', $var);
165     }
166
167     public function testCastArrayObject()
168     {
169         if (\defined('HHVM_VERSION')) {
170             $this->markTestSkipped('HHVM as different internal details.');
171         }
172         $var = new \ArrayObject(array(123));
173         $var->foo = 234;
174
175         $expected = <<<EOTXT
176 ArrayObject {
177   +"foo": 234
178   flag::STD_PROP_LIST: false
179   flag::ARRAY_AS_PROPS: false
180   iteratorClass: "ArrayIterator"
181   storage: array:1 [
182     0 => 123
183   ]
184 }
185 EOTXT;
186         $this->assertDumpEquals($expected, $var);
187     }
188
189     public function testArrayIterator()
190     {
191         if (\defined('HHVM_VERSION')) {
192             $this->markTestSkipped('HHVM as different internal details.');
193         }
194         $var = new MyArrayIterator(array(234));
195
196         $expected = <<<EOTXT
197 Symfony\Component\VarDumper\Tests\Caster\MyArrayIterator {
198   -foo: 123
199   flag::STD_PROP_LIST: false
200   flag::ARRAY_AS_PROPS: false
201   storage: array:1 [
202     0 => 234
203   ]
204 }
205 EOTXT;
206         $this->assertDumpEquals($expected, $var);
207     }
208 }
209
210 class MyArrayIterator extends \ArrayIterator
211 {
212     private $foo = 123;
213 }