<?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 ArrayObject;
use Chevere\Parameter\Cast;
use PHPUnit\Framework\Attributes\DataProvider;
use PHPUnit\Framework\TestCase;
final class CastTest extends TestCase
{
public static function dataProviderCast(): array
{
return [
[null, 'mixed'],
[1, 'int'],
[1.1, 'float'],
[true, 'bool'],
['string', 'string'],
[[], 'array'],
[new Cast(''), 'object'],
[
fn () => null,
'callable',
],
[[], 'iterable'],
[1, 'nullInt'],
[null, 'nullInt'],
[1.1, 'nullFloat'],
[null, 'nullFloat'],
[true, 'nullBool'],
[null, 'nullBool'],
['string', 'nullString'],
[null, 'nullString'],
[[], 'nullArray'],
[null, 'nullArray'],
[new Cast(''), 'nullObject'],
[null, 'nullObject'],
[
fn () => null,
'nullCallable',
],
[
null,
'nullCallable',
],
[[], 'nullIterable'],
[null, 'nullIterable'],
];
}
#[DataProvider('dataProviderCast')]
public function testCast($expected, string $method): void
{
$cast = new Cast($expected);
$this->assertSame($expected, $cast->{$method}());
}
public function testArrayAccess(): void
{
$input = ['foo'];
$value = new ArrayObject($input);
$cast = new Cast($value);
$this->assertSame($input, $cast->array());
}
}
|