Файл: gapps/vendor/phpdocumentor/type-resolver/tests/unit/Types/ContextFactoryTest.php
Строк: 153
<?php
/**
* 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.
*
* @copyright 2010-2015 Mike van Riel<mike@phpdoc.org>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentorReflectionTypes {
// Added imports on purpose as mock for the unit tests, please do not remove.
use Mockery as m;
use phpDocumentorReflectionDocBlock,
phpDocumentorReflectionDocBlockTag;
use phpDocumentor;
use ReflectionClass; // yes, the slash is part of the test
/**
* @coversDefaultClass phpDocumentorReflectionTypesContextFactory
* @covers ::<private>
*/
class ContextFactoryTest extends PHPUnit_Framework_TestCase
{
/**
* @covers ::createFromReflector
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testReadsNamespaceFromClassReflection()
{
$fixture = new ContextFactory();
$context = $fixture->createFromReflector(new ReflectionClass($this));
$this->assertSame(__NAMESPACE__, $context->getNamespace());
}
/**
* @covers ::createFromReflector
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testReadsAliasesFromClassReflection()
{
$fixture = new ContextFactory();
$expected = [
'm' => 'Mockery',
'DocBlock' => 'phpDocumentorReflectionDocBlock',
'Tag' => 'phpDocumentorReflectionDocBlockTag',
'phpDocumentor' => 'phpDocumentor',
'ReflectionClass' => 'ReflectionClass'
];
$context = $fixture->createFromReflector(new ReflectionClass($this));
$this->assertSame($expected, $context->getNamespaceAliases());
}
/**
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testReadsNamespaceFromProvidedNamespaceAndContent()
{
$fixture = new ContextFactory();
$context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__));
$this->assertSame(__NAMESPACE__, $context->getNamespace());
}
/**
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testReadsAliasesFromProvidedNamespaceAndContent()
{
$fixture = new ContextFactory();
$expected = [
'm' => 'Mockery',
'DocBlock' => 'phpDocumentorReflectionDocBlock',
'Tag' => 'phpDocumentorReflectionDocBlockTag',
'phpDocumentor' => 'phpDocumentor',
'ReflectionClass' => 'ReflectionClass'
];
$context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__));
$this->assertSame($expected, $context->getNamespaceAliases());
}
/**
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testTraitUseIsNotDetectedAsNamespaceUse()
{
$php = "<?php
namespace Foo;
trait FooTrait {}
class FooClass {
use FooTrait;
}
";
$fixture = new ContextFactory();
$context = $fixture->createForNamespace('Foo', $php);
$this->assertSame([], $context->getNamespaceAliases());
}
/**
* @covers ::createForNamespace
* @uses phpDocumentorReflectionTypesContext
*/
public function testAllOpeningBracesAreCheckedWhenSearchingForEndOfClass()
{
$php = '<?php
namespace Foo;
trait FooTrait {}
trait BarTrait {}
class FooClass {
use FooTrait;
public function bar()
{
echo "{$baz}";
echo "${baz}";
}
}
class BarClass {
use BarTrait;
public function bar()
{
echo "{$baz}";
echo "${baz}";
}
}
';
$fixture = new ContextFactory();
$context = $fixture->createForNamespace('Foo', $php);
$this->assertSame([], $context->getNamespaceAliases());
}
/**
* @covers ::createFromReflector
*/
public function testEmptyFileName()
{
$fixture = new ContextFactory();
$context = $fixture->createFromReflector(new ReflectionClass('stdClass'));
$this->assertSame([], $context->getNamespaceAliases());
}
/**
* @covers ::createFromReflector
*/
public function testEvalDClass()
{
eval(<<<PHP
namespace Foo;
class Bar
{
}
PHP
);
$fixture = new ContextFactory();
$context = $fixture->createFromReflector(new ReflectionClass('FooBar'));
$this->assertSame([], $context->getNamespaceAliases());
}
}
}
namespace phpDocumentorReflectionTypesMock {
// the following import should not show in the tests above
use phpDocumentorReflectionDocBlockDescription;
}