PHP Classes

File: tests/Processors/ArrayProcessorTest.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Var-Dump   tests/Processors/ArrayProcessorTest.php   Download  
File: tests/Processors/ArrayProcessorTest.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: 18 days ago
Size: 3,961 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\Processors;

use
Chevere\Tests\Traits\VarDumperTrait;
use
Chevere\VarDump\Processors\ArrayProcessor;
use
Chevere\VarDump\VarDumper;
use
InvalidArgumentException;
use
PHPUnit\Framework\TestCase;

final class
ArrayProcessorTest extends TestCase
{
    use
VarDumperTrait;

    public function
testInvalidArgument(): void
   
{
       
$this->expectException(InvalidArgumentException::class);
       
$this->expectExceptionMessage(
           
'type `array` for the return value of `' . VarDumper::class . '::var()`'
       
);
        new
ArrayProcessor($this->getVarDumper(null));
    }

    public function
testConstructEmpty(): void
   
{
       
$variable = [];
       
$expectInfo = 'size=0';
       
$varDumper = $this->getVarDumper($variable);
       
$this->assertProcessor(ArrayProcessor::class, $varDumper);
       
$processor = new ArrayProcessor($varDumper);
       
$this->assertSame(1, $processor->depth());
       
$this->assertSame($expectInfo, $processor->info());
       
$this->assertSame(
           
"array [] ({$expectInfo})",
           
$varDumper->writer()->__toString()
        );
    }

    public function
testX(): void
   
{
       
$variable = [0, 1, 2, 3];
       
$expectInfo = 'size=' . count($variable);
       
$containTpl = '%s => int %s (length=1)';
       
$varDumper = $this->getVarDumper($variable);
       
$processor = new ArrayProcessor($varDumper);
       
$this->assertSame(1, $processor->depth());
       
$this->assertSame($expectInfo, $processor->info());
       
$processor->write();
        foreach (
$variable as $int) {
           
$this->assertStringContainsString(
               
str_replace('%s', (string) $int, $containTpl),
               
$varDumper->writer()->__toString()
            );
        }
    }

    public function
testCircularReference(): void
   
{
       
$variable = [];
       
$variable[] = &$variable;
       
$expectInfo = 'size=' . count($variable);
       
$varDumper = $this->getVarDumper($variable);
       
$processor = new ArrayProcessor($varDumper);
       
$this->assertSame($expectInfo, $processor->info());
       
$this->assertSame(
           
"array ({$expectInfo}) (" . $processor->circularReference() . ')',
           
$varDumper->writer()->__toString()
        );
    }

    public function
testDepth(): void
   
{
       
$variable = [];
        for (
$i = 0; $i <= ArrayProcessor::MAX_DEPTH - 2; $i++) {
           
$variable = [$variable];
        }
       
$varDumper = $this->getVarDumper($variable);
       
$processor = new ArrayProcessor($varDumper);
       
$processor->write();
       
$toString = $varDumper->writer()->__toString();
       
$this->assertStringStartsWith(
            <<<PLAIN
array (size=1)
             0 => array (size=1)
PLAIN,
           
$toString
       
);
       
$this->assertStringEndsWith(
            <<<PLAIN
0 => array [] (size=0)
PLAIN,
           
$toString
       
);
    }

    public function
testMaxDepth(): void
   
{
       
$variable = [];
        for (
$i = 0; $i <= ArrayProcessor::MAX_DEPTH; $i++) {
           
$variable = [$variable];
        }
       
$varDumper = $this->getVarDumper($variable);
       
$processor = new ArrayProcessor($varDumper);
       
$processor->write();
       
$toString = $varDumper->writer()->__toString();
       
$this->assertStringStartsWith(
            <<<PLAIN
array (size=1)
             0 => array (size=1)
PLAIN,
           
$toString
       
);
       
$this->assertStringEndsWith(
            <<<PLAIN
0 => array (size=1) ({$processor->maxDepthReached()})
PLAIN,
           
$toString
       
);
    }
}