179 lines
6.8 KiB
PHP
179 lines
6.8 KiB
PHP
<?php
|
|
|
|
namespace Doctrine\Tests\Common\Annotations;
|
|
|
|
use ReflectionClass;
|
|
use Doctrine\Common\Annotations\PhpParser;
|
|
|
|
require_once __DIR__.'/Fixtures/NonNamespacedClass.php';
|
|
require_once __DIR__.'/Fixtures/GlobalNamespacesPerFileWithClassAsFirst.php';
|
|
require_once __DIR__.'/Fixtures/GlobalNamespacesPerFileWithClassAsLast.php';
|
|
|
|
class PhpParserTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
public function testParseClassWithMultipleClassesInFile()
|
|
{
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\MultipleClassesInFile');
|
|
$parser = new PhpParser();
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testParseClassWithMultipleImportsInUseStatement()
|
|
{
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\MultipleImportsInUseStatement');
|
|
$parser = new PhpParser();
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testParseClassWhenNotUserDefined()
|
|
{
|
|
$parser = new PhpParser();
|
|
$this->assertEquals(array(), $parser->parseClass(new \ReflectionClass('\stdClass')));
|
|
}
|
|
|
|
public function testParseClassWhenClassIsNotNamespaced()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass('\AnnotationsTestsFixturesNonNamespacedClass');
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testParseClassWhenClassIsInterface()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\TestInterface');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testClassWithFullyQualifiedUseStatements()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\ClassWithFullyQualifiedUseStatements');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => '\\' . __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => '\\' . __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => '\\' . __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testNamespaceAndClassCommentedOut()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\NamespaceAndClassCommentedOut');
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testEqualNamespacesPerFileWithClassAsFirst()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\EqualNamespacesPerFileWithClassAsFirst');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testEqualNamespacesPerFileWithClassAsLast()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\EqualNamespacesPerFileWithClassAsLast');
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testDifferentNamespacesPerFileWithClassAsFirst()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\DifferentNamespacesPerFileWithClassAsFirst');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testDifferentNamespacesPerFileWithClassAsLast()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\DifferentNamespacesPerFileWithClassAsLast');
|
|
|
|
$this->assertEquals(array(
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testGlobalNamespacesPerFileWithClassAsFirst()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new \ReflectionClass('\GlobalNamespacesPerFileWithClassAsFirst');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testGlobalNamespacesPerFileWithClassAsLast()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass('\GlobalNamespacesPerFileWithClassAsLast');
|
|
|
|
$this->assertEquals(array(
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testNamespaceWithClosureDeclaration()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\NamespaceWithClosureDeclaration');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
|
|
public function testIfPointerResetsOnMultipleParsingTries()
|
|
{
|
|
$parser = new PhpParser();
|
|
$class = new ReflectionClass(__NAMESPACE__ . '\Fixtures\NamespaceWithClosureDeclaration');
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
|
|
$this->assertEquals(array(
|
|
'secure' => __NAMESPACE__ . '\Fixtures\Annotation\Secure',
|
|
'route' => __NAMESPACE__ . '\Fixtures\Annotation\Route',
|
|
'template' => __NAMESPACE__ . '\Fixtures\Annotation\Template',
|
|
), $parser->parseClass($class));
|
|
}
|
|
} |