PHP Classes

File: tests/VarDumpTest.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Var-Dump   tests/VarDumpTest.php   Download  
File: tests/VarDumpTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Var-Dump
Show the value of a variable in colored way
Author: By
Last change:
Date: 1 month ago
Size: 13,242 bytes
 

Contents

Class file image Download
<?php /* * This file is part of Chevere. * * (c) Rodolfo Berrios <[email protected]> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace Chevere\Tests; use Chevere\VarDump\Formats\HtmlFormat; use Chevere\VarDump\Formats\PlainFormat; use Chevere\VarDump\Interfaces\VarDumpInterface; use Chevere\VarDump\Outputs\PlainOutput; use Chevere\VarDump\VarDump; use Chevere\Writer\StreamWriter; use PHPUnit\Framework\TestCase; use stdClass; use function Chevere\Writer\streamTemp; final class VarDumpTest extends TestCase { public function testConstruct(): void { $varDump = $this->getVarDump(); $this->assertSame(0, $varDump->shift()); $this->assertSame([], $varDump->variables()); } public function testWithVariables(): void { $stream = streamTemp(''); $writer = new StreamWriter($stream); $var = new stdClass(); $varDump = $this->getVarDump(); $varDumpWithVariables = $varDump->withVariables($var); $this->assertNotSame($varDump, $varDumpWithVariables); $this->assertEqualsCanonicalizing( [$var], $varDumpWithVariables->variables() ); $varDumpWithVariables->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $objectId = spl_object_id($var); $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ {$fileLine} 1: stdClass#{$objectId} ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); } public function testCircularReferenceArguments(): void { $var = new stdClass(); $var->circular = $var; $var->string = 'test'; $varDump = $this->getVarDump(); $with = $varDump->withVariables($var, [$var]); $stream = streamTemp(''); $writer = new StreamWriter($stream); $with->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $objectId = spl_object_id($var); $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ {$fileLine} 1: stdClass#{$objectId} public circular stdClass#{$objectId} (circular reference #{$objectId}) public string string test (length=4) 2: array (size=1) 0 => stdClass#{$objectId} public circular stdClass#{$objectId} (circular reference #{$objectId}) public string string test (length=4) ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); } public function testWithShift(): void { $stream = streamTemp(''); $writer = new StreamWriter($stream); $varDump = $this->getVarDump(); $varDumpWithShift = $varDump->withShift(1); $this->assertNotSame($varDump, $varDumpWithShift); $this->assertSame(1, $varDumpWithShift->shift()); $varDumpWithShift->process($writer); } public function testWithArrayNeedsPullUp(): void { $vars = [ 0 => [], 1 => [0, 1], 2 => [ 0 => [1], 1 => null, 3 => [[[5]]], 2 => [2], ], 3 => [ 'key' => 'value', ], 4 => null, ]; $stream = streamTemp(''); $writer = new StreamWriter($stream); $varDump = $this->getVarDump(); $with = $varDump->withVariables(...$vars); $with->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ {$fileLine} 1: array [] (size=0) 2: array (size=2) 0 => int 0 (length=1) 1 => int 1 (length=1) 3: array (size=4) 0 => array (size=1) 0 => int 1 (length=1) 1 => null 3 => array (size=1) 0 => array (size=1) 0 => array (size=1) 0 => int 5 (length=1) 2 => array (size=1) 0 => int 2 (length=1) 4: array (size=1) key => string value (length=5) 5: null ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); $stream = streamTemp(''); $writer = new StreamWriter($stream); $varDump = new VarDump(new HtmlFormat(), new PlainOutput()); $with = $varDump->withVariables(...$vars); $with->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ <span class="chv-dump-file">{$fileLine}</span> 1: <span class="chv-dump-array">array</span> [] <em><span class="chv-dump-emphasis">(size=0)</span></em> 2: <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=2)</span></em><details class="chv-dump-details" open><summary class="chv-dump-summary"></summary> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-int">int</span> 0 <em><span class="chv-dump-emphasis">(length=1)</span></em> 1 <span class="chv-dump-operator">=></span> <span class="chv-dump-int">int</span> 1 <em><span class="chv-dump-emphasis">(length=1)</span></em></details> 3: <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=4)</span></em><details class="chv-dump-details" open><summary class="chv-dump-summary"></summary> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-int">int</span> 1 <em><span class="chv-dump-emphasis">(length=1)</span></em></details> 1 <span class="chv-dump-operator">=></span> <span class="chv-dump-null">null</span> 3 <span class="chv-dump-operator">=></span> <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> <span class="chv-dump-inline"></span> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> <span class="chv-dump-inline"></span> <span class="chv-dump-inline"></span> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-int">int</span> 5 <em><span class="chv-dump-emphasis">(length=1)</span></em></details></details></details> 2 <span class="chv-dump-operator">=></span> <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> 0 <span class="chv-dump-operator">=></span> <span class="chv-dump-int">int</span> 2 <em><span class="chv-dump-emphasis">(length=1)</span></em></details></details> 4: <span class="chv-dump-array">array</span> <em><span class="chv-dump-emphasis">(size=1)</span></em><details class="chv-dump-details" open><summary class="chv-dump-summary"></summary> key <span class="chv-dump-operator">=></span> <span class="chv-dump-string">string</span> value <em><span class="chv-dump-emphasis">(length=5)</span></em></details> 5: <span class="chv-dump-null">null</span> ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); } public function testWithObjectNeedsPullUp(): void { $one = new stdClass(); $two = new stdClass(); $two->zero = 0; $two->one = 1; $nested = new stdClass(); $three = new stdClass(); $three->nested = $nested; $three->two = $two; $three->three = false; $vars = [ 0 => $one, 1 => $two, 2 => $three, ]; $oneId = spl_object_id($one); $twoId = spl_object_id($two); $threeId = spl_object_id($three); $nestedId = spl_object_id($nested); $stream = streamTemp(''); $writer = new StreamWriter($stream); $varDump = $this->getVarDump(); $with = $varDump->withVariables(...$vars); $with->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ {$fileLine} 1: stdClass#{$oneId} 2: stdClass#{$twoId} public zero int 0 (length=1) public one int 1 (length=1) 3: stdClass#{$threeId} public nested stdClass#{$nestedId} public two stdClass#{$twoId} public zero int 0 (length=1) public one int 1 (length=1) public three bool false ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); $stream = streamTemp(''); $writer = new StreamWriter($stream); $varDump = new VarDump(new HtmlFormat(), new PlainOutput()); $with = $varDump->withVariables(...$vars); $with->process($writer); $line = strval(__LINE__ - 1); $className = $varDump::class; $fileLine = __FILE__ . ':' . $line; $expectedString = <<<PLAIN {$className}->process() ------------------------------------------------------------ <span class="chv-dump-file">{$fileLine}</span> 1: <span class="chv-dump-class">stdClass</span><span class="chv-dump-operator">#{$oneId}</span> 2: <span class="chv-dump-class">stdClass</span><span class="chv-dump-operator">#{$twoId}</span><details class="chv-dump-details" open><summary class="chv-dump-summary"></summary> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">zero</span> <span class="chv-dump-int">int</span> 0 <em><span class="chv-dump-emphasis">(length=1)</span></em> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">one</span> <span class="chv-dump-int">int</span> 1 <em><span class="chv-dump-emphasis">(length=1)</span></em></details> 3: <span class="chv-dump-class">stdClass</span><span class="chv-dump-operator">#{$threeId}</span><details class="chv-dump-details" open><summary class="chv-dump-summary"></summary> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">nested</span> <span class="chv-dump-class">stdClass</span><span class="chv-dump-operator">#{$nestedId}</span> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">two</span> <span class="chv-dump-class">stdClass</span><span class="chv-dump-operator">#{$twoId}</span><details class="chv-dump-details"><summary class="chv-dump-summary"></summary> <span class="chv-dump-inline"></span> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">zero</span> <span class="chv-dump-int">int</span> 0 <em><span class="chv-dump-emphasis">(length=1)</span></em> <span class="chv-dump-inline"></span> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">one</span> <span class="chv-dump-int">int</span> 1 <em><span class="chv-dump-emphasis">(length=1)</span></em></details> <span class="chv-dump-modifier">public</span> <span class="chv-dump-variable">three</span> <span class="chv-dump-bool">bool</span> false</details> ------------------------------------------------------------ PLAIN; $this->assertSame($expectedString, $writer->__toString()); } private function getVarDump(): VarDumpInterface { return new VarDump(new PlainFormat(), new PlainOutput()); } }