1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
<?php
declare(strict_types=1);
/**
* This file is part of phpDocumentor.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @link http://phpdoc.org
*/
namespace phpDocumentor\Reflection;
use phpDocumentor\Reflection\PseudoTypes\IntegerRange;
use phpDocumentor\Reflection\Types\Context;
use PHPUnit\Framework\TestCase;
use RuntimeException;
class IntegerRangeResolverTest extends TestCase
{
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRange(): void
{
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<-5, 5>', new Context(''));
$this->assertInstanceOf(IntegerRange::class, $resolvedType);
$this->assertSame('int<-5, 5>', (string) $resolvedType);
$minValue = $resolvedType->getMinValue();
$maxValue = $resolvedType->getMaxValue();
$this->assertSame('-5', $minValue);
$this->assertSame('5', $maxValue);
}
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRangeWithKeywords(): void
{
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<min,max>', new Context(''));
$this->assertInstanceOf(IntegerRange::class, $resolvedType);
$this->assertSame('int<min, max>', (string) $resolvedType);
$minValue = $resolvedType->getMinValue();
$maxValue = $resolvedType->getMaxValue();
$this->assertSame('min', $minValue);
$this->assertSame('max', $maxValue);
}
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRangeErrorMissingMaxValue(): void
{
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('int<min,max> has not the correct format');
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<min,>', new Context(''));
}
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRangeErrorMisingMinValue(): void
{
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Unexpected token ",", expected type at offset 4');
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<,max>', new Context(''));
}
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRangeErrorMisingComma(): void
{
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('int<min,max> has not the correct format');
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<min|max>', new Context(''));
}
/**
* @uses \phpDocumentor\Reflection\Types\Context
* @uses \phpDocumentor\Reflection\Types\Compound
* @uses \phpDocumentor\Reflection\Types\String_
*/
public function testResolvingIntRangeErrorMissingEnd(): void
{
$this->expectException(RuntimeException::class);
$this->expectExceptionMessage('Unexpected token "", expected \'>\' at offset 11');
$fixture = new TypeResolver();
$resolvedType = $fixture->resolve('int<min,max', new Context(''));
}
}
|