<?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\Highlights; 
 
use Chevere\Parameter\Interfaces\TypeInterface; 
use Chevere\Tests\Traits\StripANSIColorsTrait; 
use Chevere\VarDump\Highlights\ConsoleHighlight; 
use Chevere\VarDump\Interfaces\HighlightInterface; 
use Chevere\VarDump\Interfaces\VarDumperInterface; 
use Colors\Color; 
use OutOfRangeException; 
use PHPUnit\Framework\TestCase; 
 
final class ConsoleHighlightTest extends TestCase 
{ 
    use StripANSIColorsTrait; 
 
    public function testInvalidArgumentConstruct(): void 
    { 
        $this->expectException(OutOfRangeException::class); 
        new ConsoleHighlight('invalid-argument'); 
    } 
 
    public function testConstruct(): void 
    { 
        $dump = 'string'; 
        $open = '[38;5;'; 
        $close = '[0m'; 
        $expect = [ 
            TypeInterface::STRING => '%c0%m' . $dump, 
            TypeInterface::FLOAT => '%c0%m' . $dump, 
            TypeInterface::INT => '%c0%m' . $dump, 
            TypeInterface::BOOL => '%c0%m' . $dump, 
            TypeInterface::NULL => '%c0%m' . $dump, 
            TypeInterface::OBJECT => '%c0%m' . $dump, 
            TypeInterface::ARRAY => '%c0%m' . $dump, 
            TypeInterface::RESOURCE => '%c0%m' . $dump, 
            VarDumperInterface::FILE => '%c0%m' . $dump, 
            VarDumperInterface::CLASS_REG => '%c0%m' . $dump, 
            VarDumperInterface::OPERATOR => '%c0%m' . $dump, 
            VarDumperInterface::FUNCTION => '%c0%m' . $dump, 
            VarDumperInterface::MODIFIER => '%c0%m' . $dump, 
            VarDumperInterface::VARIABLE => '%c0%m' . $dump, 
            VarDumperInterface::EMPHASIS => '%c1%m' . $open . '%c0%m' . $dump . $close, 
        ]; 
        $palette = ConsoleHighlight::palette(); 
        foreach ($expect as $k => &$v) { 
            $paletteColor = $palette[$k]; 
            if (! is_array($paletteColor)) { 
                $paletteColor = [$paletteColor]; 
            } 
            foreach ($paletteColor as $pos => $colorCode) { 
                $v = str_replace("%c{$pos}%", $colorCode, $v); 
            } 
            $v = $open . $v . $close; 
        } 
        $color = new Color(); 
        foreach (HighlightInterface::KEYS as $key) { 
            $highlight = new ConsoleHighlight($key); 
            $string = $highlight->highlight($dump); 
            $expected = $expect[$key]; 
            if ($color->isSupported() === false) { 
                $expected = $this->stripANSIColors($expected); 
            } 
            $this->assertSame($expected, $string); 
        } 
    } 
} 
 
 |