<?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\PlainFormat;
use Chevere\VarDump\Interfaces\VarDumperInterface;
use Chevere\VarDump\ObjectIds;
use Chevere\VarDump\VarDumpable;
use Chevere\VarDump\VarDumper;
use Chevere\Writer\StreamWriter;
use PHPUnit\Framework\TestCase;
use stdClass;
use function Chevere\Writer\streamTemp;
final class VarDumperTest extends TestCase
{
public function testConstruct(): void
{
$variable = ['foo', new stdClass()];
$defaultIndent = 0;
$defaultDepth = 0;
$defaultIndentSting = '';
$writer = new StreamWriter(streamTemp(''));
$format = new PlainFormat();
$dumpable = new VarDumpable($variable);
$varDumper = new VarDumper(
writer: $writer,
format: $format,
dumpable: $dumpable,
objectReferences: new ObjectIds()
);
$this->assertSame($writer, $varDumper->writer());
$this->assertSame($format, $varDumper->format());
$this->assertSame($dumpable, $varDumper->dumpable());
$this->assertSame($defaultIndent, $varDumper->indent());
$this->assertSame($defaultDepth, $varDumper->depth());
$this->assertSame($defaultIndentSting, $varDumper->indentString());
$this->assertCount(0, $varDumper->objectReferences());
for ($int = 1; $int <= 5; $int++) {
$this->hookTestWithIndent($varDumper, $int);
$this->hookTestWithDepth($varDumper, $int);
$varDumperWithProcess = $this->hookTestWithProcess(
$varDumperWithProcess ?? $varDumper,
$int
);
}
}
public function hookTestWithIndent(VarDumperInterface $varDumper, int $indent): void
{
$varDumperWithIndent = $varDumper->withIndent($indent);
$this->assertNotSame($varDumper, $varDumperWithIndent);
$this->assertSame($indent, $varDumperWithIndent->indent());
$this->assertSame(
str_repeat(' ', $indent),
$varDumperWithIndent->indentString()
);
}
public function hookTestWithDepth(
VarDumperInterface $varDumper,
int $depth
): void {
$varDumperWithDepth = $varDumper->withDepth($depth);
$this->assertNotSame($varDumper, $varDumperWithDepth);
$this->assertSame($depth, $varDumperWithDepth->depth());
}
public function hookTestWithProcess(
VarDumperInterface $varDumper,
int $indent
): VarDumperInterface {
$varDumperWithProcess = $varDumper->withProcess();
$this->assertNotSame($varDumper, $varDumperWithProcess);
$this->assertSame($indent, $varDumperWithProcess->indent());
return $varDumperWithProcess;
}
}
|