| 
<?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\StringProcessor;
 use InvalidArgumentException;
 use PHPUnit\Framework\TestCase;
 
 final class StringProcessorTest extends TestCase
 {
 use VarDumperTrait;
 
 public function dataProviderConstruct(): array
 {
 return [
 [''],
 ['string'],
 ['cádena'],
 ['another string'],
 ['100'],
 ['false'],
 ['?'],
 ['?'],
 [chr(128), 'b"?"'],
 [hex2bin('ae0f3d'), 'b"®\x0F="'],
 ];
 }
 
 /**
 * @dataProvider dataProviderConstruct
 */
 public function testConstruct(string $var, string $expected = ''): void
 {
 if ($expected === '') {
 $expected = $var;
 }
 $varDumper = $this->getVarDumper($var);
 $this->assertProcessor(StringProcessor::class, $varDumper);
 $processor = new StringProcessor($varDumper);
 $this->assertSame('CP1252', $processor->charset());
 $expectedInfo = 'length=' . mb_strlen($var);
 $this->assertSame($expectedInfo, $processor->info(), "info:{$var}");
 $this->assertSame(
 "string {$expected} ({$expectedInfo})",
 $varDumper->writer()->__toString(),
 "string:{$expected}"
 );
 }
 
 public function testDefaultCharset(): void
 {
 $varDumper = $this->getVarDumper('string');
 $defaultCharset = ini_get('default_charset');
 ini_set('default_charset', '8bit');
 $processor = new StringProcessor($varDumper);
 $this->assertSame('8BIT', $processor->charset());
 ini_set('default_charset', $defaultCharset);
 }
 
 public function testTypeError(): void
 {
 $varDumper = $this->getVarDumper(123);
 $this->expectException(InvalidArgumentException::class);
 new StringProcessor($varDumper);
 }
 }
 
 |