4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\VarDumper\Tests\Caster;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\VarDumper\Test\VarDumperTestTrait;
18 * @author Grégoire Pineau <lyrixx@lyrixx.info>
20 class SplCasterTest extends TestCase
22 use VarDumperTestTrait;
24 public function getCastFileInfoTests()
27 array(__FILE__, <<<'EOTXT'
30 filename: "SplCasterTest.php"
31 basename: "SplCasterTest.php"
32 pathname: "%sSplCasterTest.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
53 array('https://google.com/about', <<<'EOTXT'
55 %Apath: "https://google.com"
58 pathname: "https://google.com/about"
67 /** @dataProvider getCastFileInfoTests */
68 public function testCastFileInfo($file, $dump)
70 $this->assertDumpMatchesFormat($dump, new \SplFileInfo($file));
73 public function testCastFileObject()
75 $var = new \SplFileObject(__FILE__);
76 $var->setFlags(\SplFileObject::DROP_NEW_LINE | \SplFileObject::SKIP_EMPTY);
80 filename: "SplCasterTest.php"
81 basename: "SplCasterTest.php"
82 pathname: "%sSplCasterTest.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
100 %AcsvControl: array:%d [
104 flags: DROP_NEW_LINE|SKIP_EMPTY
119 $this->assertDumpMatchesFormat($dump, $var);
123 * @dataProvider provideCastSplDoublyLinkedList
125 public function testCastSplDoublyLinkedList($modeValue, $modeDump)
127 $var = new \SplDoublyLinkedList();
128 $var->setIteratorMode($modeValue);
130 SplDoublyLinkedList {
135 $this->assertDumpMatchesFormat($dump, $var);
138 public function provideCastSplDoublyLinkedList()
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'),
148 public function testCastObjectStorageIsntModified()
150 $var = new \SplObjectStorage();
151 $var->attach(new \stdClass());
153 $current = $var->current();
155 $this->assertDumpMatchesFormat('%A', $var);
156 $this->assertSame($current, $var->current());
159 public function testCastObjectStorageDumpsInfo()
161 $var = new \SplObjectStorage();
162 $var->attach(new \stdClass(), new \DateTime());
164 $this->assertDumpMatchesFormat('%ADateTime%A', $var);
167 public function testCastArrayObject()
169 if (\defined('HHVM_VERSION')) {
170 $this->markTestSkipped('HHVM as different internal details.');
172 $var = new \ArrayObject(array(123));
178 flag::STD_PROP_LIST: false
179 flag::ARRAY_AS_PROPS: false
180 iteratorClass: "ArrayIterator"
186 $this->assertDumpEquals($expected, $var);
189 public function testArrayIterator()
191 if (\defined('HHVM_VERSION')) {
192 $this->markTestSkipped('HHVM as different internal details.');
194 $var = new MyArrayIterator(array(234));
197 Symfony\Component\VarDumper\Tests\Caster\MyArrayIterator {
199 flag::STD_PROP_LIST: false
200 flag::ARRAY_AS_PROPS: false
206 $this->assertDumpEquals($expected, $var);
210 class MyArrayIterator extends \ArrayIterator