*/ class ContextFactoryTest extends TestCase { /** * @covers ::createFromReflector * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testReadsNamespaceFromClassReflection(): void { $fixture = new ContextFactory(); $context = $fixture->createFromReflector(new ReflectionClass($this)); $this->assertSame(__NAMESPACE__, $context->getNamespace()); } /** * @covers ::createFromReflector * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testReadsAliasesFromClassReflection(): void { $fixture = new ContextFactory(); $context = $fixture->createFromReflector(new ReflectionClass($this)); $this->assertNamespaceAliasesFrom($context); } /** * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testReadsNamespaceFromProvidedNamespaceAndContent(): void { $fixture = new ContextFactory(); $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); $this->assertSame(__NAMESPACE__, $context->getNamespace()); } /** * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testReadsAliasesFromProvidedNamespaceAndContent(): void { $fixture = new ContextFactory(); $context = $fixture->createForNamespace(__NAMESPACE__, file_get_contents(__FILE__)); $this->assertNamespaceAliasesFrom($context); } /** * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testTraitUseIsNotDetectedAsNamespaceUse(): void { $php = 'createForNamespace('Foo', $php); $this->assertSame([], $context->getNamespaceAliases()); } /** * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testAllOpeningBracesAreCheckedWhenSearchingForEndOfClass(): void { $php = 'createForNamespace('Foo', $php); $this->assertSame([], $context->getNamespaceAliases()); } /** * @covers ::createForNamespace * @uses Barryvdh\Reflection\DocBlock\Context */ public function testTraitContainsClosureWithUseStatement(): void { $php = 'createForNamespace('Foo', $php); $this->assertSame([], $context->getNamespaceAliases()); } /** * @covers ::createFromReflector */ public function testEmptyFileName(): void { $fixture = new ContextFactory(); $context = $fixture->createFromReflector(new ReflectionClass(stdClass::class)); $this->assertSame([], $context->getNamespaceAliases()); } /** * @covers ::createFromReflector */ public function testEvalDClass(): void { eval( <<createFromReflector(new ReflectionClass('Foo\Bar')); $this->assertSame([], $context->getNamespaceAliases()); } public function assertNamespaceAliasesFrom(Context $context) { $expected = [ 'm' => '\\' . m::class, 'DocBlock' => '\\' . DocBlock::class, 'Tag' => '\\' . Tag::class, 'Barryvdh' => '\\' . 'Barryvdh', 'TestCase' => '\\' . TestCase::class, 'Assert' => '\\' . Assert::class, 'e' => '\\' . e::class, ReflectionClass::class => '\\' . ReflectionClass::class, \stdClass::class => '\\' . \stdClass::class, ]; $actual = $context->getNamespaceAliases(); // sort so that order differences don't break it asort($expected); asort($actual); $this->assertSame($expected, $actual); } }