<?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 InvalidArgumentException; 
use PHPUnit\Framework\Attributes\DataProvider; 
use PHPUnit\Framework\TestCase; 
use function Chevere\Parameter\boolInt; 
use function Chevere\Parameter\int; 
 
final class FunctionsIntTest extends TestCase 
{ 
    public function testInt(): void 
    { 
        $parameter = int(); 
        $this->assertSame('', $parameter->description()); 
        $this->assertSame(null, $parameter->default()); 
        $this->assertSame(null, $parameter->min()); 
        $this->assertSame(null, $parameter->max()); 
        $this->assertSame([], $parameter->accept()); 
        $this->assertSame([], $parameter->reject()); 
    } 
 
    public function testIntOptions(): void 
    { 
        $description = 'test'; 
        $default = 5; 
        $parameter = int( 
            description: $description, 
            default: $default, 
            min: -100, 
            max: 100, 
        ); 
        $this->assertSame($description, $parameter->description()); 
        $this->assertSame($default, $parameter->default()); 
        $this->assertSame(-100, $parameter->min()); 
        $this->assertSame(100, $parameter->max()); 
        $parameter = int(accept: [0, 1]); 
        $this->assertSame([0, 1], $parameter->accept()); 
        $parameter = int(reject: [0, 1]); 
        $this->assertSame([0, 1], $parameter->reject()); 
    } 
 
    public function testBoolInt(): void 
    { 
        $int = boolInt(); 
        $this->assertSame('', $int->description()); 
        $this->assertNull($int->default()); 
        $this->expectException(InvalidArgumentException::class); 
        boolInt(default: 2); 
    } 
 
    public static function boolIntArgumentsProvider(): array 
    { 
        return [ 
            ['foo', 1], 
            ['bar', 0], 
        ]; 
    } 
 
    #[DataProvider('boolIntArgumentsProvider')] 
    public function testBoolIntArguments(string $description, int $default): void 
    { 
        $int = boolInt($description, $default); 
        $this->assertSame($description, $int->description()); 
        $this->assertSame($default, $int->default()); 
    } 
} 
 
 |