public function testReflectionOnTraitName() { $qualified = self::TEST_FIXTURE_TRAIT; $lastSlashPosition = StringInfo::searchPositionFromRight($qualified, '\\'); $name = substr($qualified, $lastSlashPosition + 1); $namespace = substr($qualified, 0, $lastSlashPosition); $namespaceSections = explode('\\', $namespace); $r = Inspect::useTrait($qualified); $this->assertTrue($r instanceof TraitInspector); $this->assertSame($qualified, $r->nameQualified()); $this->assertSame($name, $r->nameUnQualified()); $this->assertSame($name, $r->name()); $this->assertSame($name, $r->name(false)); $this->assertSame($qualified, $r->name(true)); $this->assertSame($namespace, $r->namespaceName()); $this->assertSame($namespaceSections, $r->namespaceSections()); $r = Inspect::using($qualified); $this->assertTrue($r instanceof TraitInspector); $this->assertSame($qualified, $r->nameQualified()); $this->assertSame($name, $r->nameUnQualified()); $this->assertSame($name, $r->name()); $this->assertSame($name, $r->name(false)); $this->assertSame($qualified, $r->name(true)); $this->assertSame($namespace, $r->namespaceName()); $this->assertSame($namespaceSections, $r->namespaceSections()); $trait = FixtureTraitTwo::class; $r = Inspect::useTrait($trait); $this->assertTrue($r instanceof TraitInspector); $this->assertSame($trait, $r->nameQualified()); $this->expectException(InvalidArgumentException::class); $r = Inspect::useTrait($trait . '\\InvalidTraitName'); }