| 
<?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\Tests\Traits\DebugBacktraceTrait;
 use Chevere\Tests\Traits\StripANSIColorsTrait;
 use Chevere\VarDump\Formats\ConsoleFormat;
 use Chevere\VarDump\Formats\HtmlFormat;
 use Chevere\VarDump\Formats\PlainFormat;
 use Chevere\VarDump\Outputs\ConsoleOutput;
 use Chevere\VarDump\Outputs\HtmlOutput;
 use Chevere\VarDump\Outputs\PlainOutput;
 use Chevere\VarDump\VarOutput;
 use Chevere\Writer\StreamWriter;
 use PHPUnit\Framework\TestCase;
 use function Chevere\Writer\streamTemp;
 
 final class VarOutputTest extends TestCase
 {
 use DebugBacktraceTrait;
 use StripANSIColorsTrait;
 
 public function testPlainOutput(): void
 {
 $trace = $this->getDebugBacktrace();
 $writer = new StreamWriter(streamTemp(''));
 $varOutput = new VarOutput(
 writer: $writer,
 trace: $trace,
 format: new PlainFormat()
 );
 $output = new PlainOutput();
 $varOutput->process(
 $output,
 name: null,
 id: 123
 );
 $this->assertSame($trace, $output->trace());
 $this->assertSame(
 $this->getParsed($trace, 'output-plain'),
 $writer->__toString(),
 );
 }
 
 public function testConsoleOutput(): void
 {
 $trace = $this->getDebugBacktrace();
 $writer = new StreamWriter(streamTemp(''));
 $varOutput = new VarOutput(
 writer: $writer,
 trace: $trace,
 format: new ConsoleFormat(),
 );
 $varOutput->process(new ConsoleOutput(), name: null);
 $parsed = $this->getParsed($trace, 'output-console-color');
 $string = $writer->__toString();
 $parsed = $this->stripANSIColors($parsed);
 $string = $this->stripANSIColors($string);
 $this->assertSame($parsed, $string);
 }
 
 public function testHtmlOutput(): void
 {
 $trace = $this->getDebugBacktrace();
 $writer = new StreamWriter(streamTemp(''));
 $varOutput = new VarOutput(
 writer: $writer,
 trace: $trace,
 format: new HtmlFormat(),
 );
 $htmlOutput = new HtmlOutput();
 $this->assertFalse($htmlOutput->isStyleWritten());
 $varOutput->process($htmlOutput, name: null);
 $parsed = $this->getParsed($trace, 'output-html');
 $this->assertSame($parsed, $writer->__toString());
 $this->assertTrue($htmlOutput->isStyleWritten());
 }
 
 private function getParsed(array $trace, string $name): string
 {
 return strtr(include "src/{$name}.php", [
 '%handlerClassName%' => $trace[0]['class'],
 '%handlerFunctionName%' => $trace[0]['function'],
 '%fileLine%' => $trace[0]['file'] . ':' . $trace[0]['line'],
 '%className%' => $trace[1]['class'],
 '%functionName%' => $trace[1]['function'],
 ]);
 }
 }
 
 |