annotate vendor/symfony/var-dumper/Tests/Cloner/DataTest.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\Cloner;
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\Caster\ClassStub;
Chris@0 17 use Symfony\Component\VarDumper\Cloner\Data;
Chris@0 18 use Symfony\Component\VarDumper\Cloner\VarCloner;
Chris@0 19
Chris@0 20 class DataTest extends TestCase
Chris@0 21 {
Chris@0 22 public function testBasicData()
Chris@0 23 {
Chris@17 24 $values = [1 => 123, 4.5, 'abc', null, false];
Chris@0 25 $data = $this->cloneVar($values);
Chris@17 26 $clonedValues = [];
Chris@0 27
Chris@0 28 $this->assertInstanceOf(Data::class, $data);
Chris@17 29 $this->assertCount(\count($values), $data);
Chris@0 30 $this->assertFalse(isset($data->{0}));
Chris@0 31 $this->assertFalse(isset($data[0]));
Chris@0 32
Chris@0 33 foreach ($data as $k => $v) {
Chris@0 34 $this->assertTrue(isset($data->{$k}));
Chris@0 35 $this->assertTrue(isset($data[$k]));
Chris@17 36 $this->assertSame(\gettype($values[$k]), $data->seek($k)->getType());
Chris@0 37 $this->assertSame($values[$k], $data->seek($k)->getValue());
Chris@0 38 $this->assertSame($values[$k], $data->{$k});
Chris@0 39 $this->assertSame($values[$k], $data[$k]);
Chris@0 40 $this->assertSame((string) $values[$k], (string) $data->seek($k));
Chris@0 41
Chris@0 42 $clonedValues[$k] = $v->getValue();
Chris@0 43 }
Chris@0 44
Chris@0 45 $this->assertSame($values, $clonedValues);
Chris@0 46 }
Chris@0 47
Chris@0 48 public function testObject()
Chris@0 49 {
Chris@0 50 $data = $this->cloneVar(new \Exception('foo'));
Chris@0 51
Chris@0 52 $this->assertSame('Exception', $data->getType());
Chris@0 53
Chris@0 54 $this->assertSame('foo', $data->message);
Chris@0 55 $this->assertSame('foo', $data->{Caster::PREFIX_PROTECTED.'message'});
Chris@0 56
Chris@0 57 $this->assertSame('foo', $data['message']);
Chris@0 58 $this->assertSame('foo', $data[Caster::PREFIX_PROTECTED.'message']);
Chris@0 59
Chris@0 60 $this->assertStringMatchesFormat('Exception (count=%d)', (string) $data);
Chris@0 61 }
Chris@0 62
Chris@0 63 public function testArray()
Chris@0 64 {
Chris@17 65 $values = [[], [123]];
Chris@0 66 $data = $this->cloneVar($values);
Chris@0 67
Chris@0 68 $this->assertSame($values, $data->getValue(true));
Chris@0 69
Chris@0 70 $children = $data->getValue();
Chris@0 71
Chris@0 72 $this->assertInternalType('array', $children);
Chris@0 73
Chris@0 74 $this->assertInstanceOf(Data::class, $children[0]);
Chris@0 75 $this->assertInstanceOf(Data::class, $children[1]);
Chris@0 76
Chris@0 77 $this->assertEquals($children[0], $data[0]);
Chris@0 78 $this->assertEquals($children[1], $data[1]);
Chris@0 79
Chris@0 80 $this->assertSame($values[0], $children[0]->getValue(true));
Chris@0 81 $this->assertSame($values[1], $children[1]->getValue(true));
Chris@0 82 }
Chris@0 83
Chris@0 84 public function testStub()
Chris@0 85 {
Chris@17 86 $data = $this->cloneVar([new ClassStub('stdClass')]);
Chris@0 87 $data = $data[0];
Chris@0 88
Chris@0 89 $this->assertSame('string', $data->getType());
Chris@0 90 $this->assertSame('stdClass', $data->getValue());
Chris@0 91 $this->assertSame('stdClass', (string) $data);
Chris@0 92 }
Chris@0 93
Chris@0 94 public function testHardRefs()
Chris@0 95 {
Chris@17 96 $values = [[]];
Chris@0 97 $values[1] = &$values[0];
Chris@0 98 $values[2][0] = &$values[2];
Chris@0 99
Chris@0 100 $data = $this->cloneVar($values);
Chris@0 101
Chris@17 102 $this->assertSame([], $data[0]->getValue());
Chris@17 103 $this->assertSame([], $data[1]->getValue());
Chris@17 104 $this->assertEquals([$data[2]->getValue()], $data[2]->getValue(true));
Chris@0 105
Chris@0 106 $this->assertSame('array (count=3)', (string) $data);
Chris@0 107 }
Chris@0 108
Chris@0 109 private function cloneVar($value)
Chris@0 110 {
Chris@0 111 $cloner = new VarCloner();
Chris@0 112
Chris@0 113 return $cloner->cloneVar($value);
Chris@0 114 }
Chris@0 115 }