PHP Classes

File: tests/TypeTest.php

Recommend this page to a friend!
  Classes of Rodolfo Berrios Arce   Parameter   tests/TypeTest.php   Download  
File: tests/TypeTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: Parameter
Validate function parameters with PHP attributes
Author: By
Last change:
Date: 24 days ago
Size: 2,427 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;

use
Chevere\Parameter\Interfaces\TypeInterface;
use
Chevere\Parameter\Type;
use
Exception;
use
InvalidArgumentException;
use
PHPUnit\Framework\TestCase;
use
stdClass;

final class
TypeTest extends TestCase
{
    public function
testInvalidArgument(): void
   
{
       
$this->expectException(InvalidArgumentException::class);
        new
Type('TypeSome');
    }

    public function
testTypes(): void
   
{
       
$resource = fopen(__FILE__, 'r');
        if (!
is_resource($resource)) {
           
$this->markTestIncomplete('Unable to open ' . __FILE__);
        }
       
$scalars = ['bool', 'int', 'float', 'string'];
        foreach ([
           
Type::BOOL => true,
           
Type::INT => 1,
           
Type::FLOAT => 13.13,
           
Type::STRING => 'test',
           
Type::ARRAY => ['test'],
           
Type::OBJECT => new stdClass(),
           
Type::CALLABLE => 'phpinfo',
           
Type::ITERABLE => [4, 2, 1, 3],
           
Type::NULL => null,
           
Type::RESOURCE => $resource,
        ] as
$key => $val) {
           
$type = new Type($key);
           
$this->assertSame($key, $type->primitive());
           
$this->assertSame($key, $type->typeHinting());
           
$this->assertTrue($type->validate($val));
           
$this->assertSame(in_array($key, $scalars, true), $type->isScalar());
        }
       
/** @var resource $resource */
       
fclose($resource);
    }

    public function
testClassName(): void
   
{
       
$type = new Type(Exception::class);
       
$this->assertSame(Type::PRIMITIVE_CLASS_NAME, $type->primitive());
       
$this->assertSame(Exception::class, $type->typeHinting());
       
$this->assertTrue($type->validate(new Exception()));
       
$this->assertFalse($type->isScalar());
    }

    public function
testInterfaceName(): void
   
{
       
$type = new Type(TypeInterface::class);
       
$this->assertSame(Type::PRIMITIVE_INTERFACE_NAME, $type->primitive());
       
$this->assertSame(TypeInterface::class, $type->typeHinting());
       
$this->assertTrue($type->validate(new Type(Type::STRING)));
       
$this->assertFalse($type->validate(new Exception()));
    }
}