<?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\Parameter\NullParameter; 
use PHPUnit\Framework\TestCase; 
use TypeError; 
 
final class NullParameterTest extends TestCase 
{ 
    public function testConstruct(): void 
    { 
        $parameter = new NullParameter(); 
        $this->assertSame(null, $parameter->default()); 
        $this->assertSame([ 
            'type' => 'null', 
            'description' => '', 
            'default' => null, 
        ], $parameter->schema()); 
        $parameter(null); 
    } 
 
    public function testWithDefault(): void 
    { 
        $parameter = new NullParameter(); 
        $with = $parameter->withDefault(null); 
        $this->assertNotSame($parameter, $with); 
        $parameter->assertCompatible($with); 
        $with(null); 
    } 
 
    public function testCompatible(): void 
    { 
        $this->expectNotToPerformAssertions(); 
        $parameter = new NullParameter(); 
        $compatible = new NullParameter(); 
        $parameter->assertCompatible($compatible); 
    } 
 
    public function testError(): void 
    { 
        $parameter = new NullParameter(); 
        $this->expectException(TypeError::class); 
        $this->expectExceptionMessage( 
            <<<PLAIN 
            Argument value provided is not of type null 
            PLAIN 
        ); 
        $parameter(1); 
    } 
} 
 
 |