radarrplexorganizrnginxsonarrdashboardsabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepage
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							109 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							109 lines
						
					
					
						
							3.5 KiB
						
					
					
				| <?php declare(strict_types=1); | |
| 
 | |
| namespace PhpParser\Builder; | |
| 
 | |
| use PhpParser\Comment; | |
| use PhpParser\Node; | |
| use PhpParser\Node\Name; | |
| use PhpParser\Node\Stmt; | |
| use PhpParser\Node\Stmt\Class_; | |
| use PHPUnit\Framework\TestCase; | |
| 
 | |
| class TraitUseAdaptationTest extends TestCase | |
| { | |
|     protected function createTraitUseAdaptationBuilder($trait, $method) { | |
|         return new TraitUseAdaptation($trait, $method); | |
|     } | |
| 
 | |
|     public function testAsMake() { | |
|         $builder = $this->createTraitUseAdaptationBuilder(null, 'foo'); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\TraitUseAdaptation\Alias(null, 'foo', null, 'bar'), | |
|             (clone $builder)->as('bar')->getNode() | |
|         ); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PUBLIC, null), | |
|             (clone $builder)->makePublic()->getNode() | |
|         ); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PROTECTED, null), | |
|             (clone $builder)->makeProtected()->getNode() | |
|         ); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\TraitUseAdaptation\Alias(null, 'foo', Class_::MODIFIER_PRIVATE, null), | |
|             (clone $builder)->makePrivate()->getNode() | |
|         ); | |
|     } | |
| 
 | |
|     public function testInsteadof() { | |
|         $node = $this->createTraitUseAdaptationBuilder('SomeTrait', 'foo') | |
|             ->insteadof('AnotherTrait') | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\TraitUseAdaptation\Precedence( | |
|                 new Name('SomeTrait'), | |
|                 'foo', | |
|                 [new Name('AnotherTrait')] | |
|             ), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testAsOnNotAlias() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Cannot set alias for not alias adaptation buider'); | |
|         $this->createTraitUseAdaptationBuilder('Test', 'foo') | |
|             ->insteadof('AnotherTrait') | |
|             ->as('bar') | |
|         ; | |
|     } | |
| 
 | |
|     public function testInsteadofOnNotPrecedence() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Cannot add overwritten traits for not precedence adaptation buider'); | |
|         $this->createTraitUseAdaptationBuilder('Test', 'foo') | |
|             ->as('bar') | |
|             ->insteadof('AnotherTrait') | |
|         ; | |
|     } | |
| 
 | |
|     public function testInsteadofWithoutTrait() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Precedence adaptation must have trait'); | |
|         $this->createTraitUseAdaptationBuilder(null, 'foo') | |
|             ->insteadof('AnotherTrait') | |
|         ; | |
|     } | |
| 
 | |
|     public function testMakeOnNotAlias() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Cannot set access modifier for not alias adaptation buider'); | |
|         $this->createTraitUseAdaptationBuilder('Test', 'foo') | |
|             ->insteadof('AnotherTrait') | |
|             ->makePublic() | |
|         ; | |
|     } | |
| 
 | |
|     public function testMultipleMake() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Multiple access type modifiers are not allowed'); | |
|         $this->createTraitUseAdaptationBuilder(null, 'foo') | |
|             ->makePrivate() | |
|             ->makePublic() | |
|         ; | |
|     } | |
| 
 | |
|     public function testUndefinedType() { | |
|         $this->expectException(\LogicException::class); | |
|         $this->expectExceptionMessage('Type of adaptation is not defined'); | |
|         $this->createTraitUseAdaptationBuilder(null, 'foo') | |
|             ->getNode() | |
|         ; | |
|     } | |
| }
 | |
| 
 |