1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-27 04:45:20 +01:00
psalm/tests/TypeParseTest.php
2016-09-22 00:50:47 -04:00

49 lines
1.6 KiB
PHP

<?php
namespace Psalm\Tests;
use Psalm\Type;
use PhpParser;
use PhpParser\ParserFactory;
use PHPUnit_Framework_TestCase;
class TypeParseTest extends PHPUnit_Framework_TestCase
{
protected static $_parser;
public static function setUpBeforeClass()
{
self::$_parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
}
private static function getAtomic($string)
{
return array_values(Type::parseString($string)->types)[0];
}
public function testIntOrString()
{
$this->assertEquals('int|string', (string) Type::parseString('int|string'));
}
public function testArray()
{
$this->assertEquals('array<int,int>', (string) Type::parseString('array<int,int>'));
$this->assertEquals('array<int,string>', (string) Type::parseString('array<int,string>'));
$this->assertEquals('array<int,static>', (string) Type::parseString('array<int,static>'));
$this->assertEquals('array<int|string,string>', (string) Type::parseString('array<int|string,string>'));
}
public function testGeneric()
{
$this->assertEquals('B<int>', (string) Type::parseString('B<int>'));
}
public function testObjectLike()
{
$this->assertEquals('object-like{a:int,b:string}', (string) Type::parseString('object-like{a:int,b:string}'));
$this->assertEquals('object-like{a:int|string,b:string}', (string) Type::parseString('object-like{a:int|string,b:string}'));
$this->assertEquals('object-like{a:array<int,string|int>,b:string}', (string) Type::parseString('object-like{a:array<int,string|int>,b:string}'));
}
}