nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							161 lines
						
					
					
						
							4.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							161 lines
						
					
					
						
							4.3 KiB
						
					
					
				| <?php | |
| 
 | |
| namespace PhpParser\Builder; | |
| 
 | |
| use PhpParser\Comment; | |
| use PhpParser\Node; | |
| use PhpParser\Node\Name; | |
| use PhpParser\Node\Stmt; | |
| 
 | |
| class ClassTest extends \PHPUnit_Framework_TestCase | |
| { | |
|     protected function createClassBuilder($class) { | |
|         return new Class_($class); | |
|     } | |
| 
 | |
|     public function testExtendsImplements() { | |
|         $node = $this->createClassBuilder('SomeLogger') | |
|             ->extend('BaseLogger') | |
|             ->implement('Namespaced\Logger', new Name('SomeInterface')) | |
|             ->implement('\Fully\Qualified', 'namespace\NamespaceRelative') | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('SomeLogger', array( | |
|                 'extends' => new Name('BaseLogger'), | |
|                 'implements' => array( | |
|                     new Name('Namespaced\Logger'), | |
|                     new Name('SomeInterface'), | |
|                     new Name\FullyQualified('Fully\Qualified'), | |
|                     new Name\Relative('NamespaceRelative'), | |
|                 ), | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testAbstract() { | |
|         $node = $this->createClassBuilder('Test') | |
|             ->makeAbstract() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('Test', array( | |
|                 'flags' => Stmt\Class_::MODIFIER_ABSTRACT | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testFinal() { | |
|         $node = $this->createClassBuilder('Test') | |
|             ->makeFinal() | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('Test', array( | |
|                 'flags' => Stmt\Class_::MODIFIER_FINAL | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testStatementOrder() { | |
|         $method = new Stmt\ClassMethod('testMethod'); | |
|         $property = new Stmt\Property( | |
|             Stmt\Class_::MODIFIER_PUBLIC, | |
|             array(new Stmt\PropertyProperty('testProperty')) | |
|         ); | |
|         $const = new Stmt\ClassConst(array( | |
|             new Node\Const_('TEST_CONST', new Node\Scalar\String_('ABC')) | |
|         )); | |
|         $use = new Stmt\TraitUse(array(new Name('SomeTrait'))); | |
| 
 | |
|         $node = $this->createClassBuilder('Test') | |
|             ->addStmt($method) | |
|             ->addStmt($property) | |
|             ->addStmts(array($const, $use)) | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('Test', array( | |
|                 'stmts' => array($use, $const, $property, $method) | |
|             )), | |
|             $node | |
|         ); | |
|     } | |
| 
 | |
|     public function testDocComment() { | |
|         $docComment = <<<'DOC' | |
| /** | |
|  * Test | |
|  */ | |
| DOC; | |
|         $class = $this->createClassBuilder('Test') | |
|             ->setDocComment($docComment) | |
|             ->getNode(); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('Test', array(), array( | |
|                 'comments' => array( | |
|                     new Comment\Doc($docComment) | |
|                 ) | |
|             )), | |
|             $class | |
|         ); | |
| 
 | |
|         $class = $this->createClassBuilder('Test') | |
|             ->setDocComment(new Comment\Doc($docComment)) | |
|             ->getNode(); | |
| 
 | |
|         $this->assertEquals( | |
|             new Stmt\Class_('Test', array(), array( | |
|                 'comments' => array( | |
|                     new Comment\Doc($docComment) | |
|                 ) | |
|             )), | |
|             $class | |
|         ); | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Unexpected node of type "Stmt_Echo" | |
|      */ | |
|     public function testInvalidStmtError() { | |
|         $this->createClassBuilder('Test') | |
|             ->addStmt(new Stmt\Echo_(array())) | |
|         ; | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Doc comment must be a string or an instance of PhpParser\Comment\Doc | |
|      */ | |
|     public function testInvalidDocComment() { | |
|         $this->createClassBuilder('Test') | |
|             ->setDocComment(new Comment('Test')); | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Name cannot be empty | |
|      */ | |
|     public function testEmptyName() { | |
|         $this->createClassBuilder('Test') | |
|             ->extend(''); | |
|     } | |
| 
 | |
|     /** | |
|      * @expectedException \LogicException | |
|      * @expectedExceptionMessage Name must be a string or an instance of PhpParser\Node\Name | |
|      */ | |
|     public function testInvalidName() { | |
|         $this->createClassBuilder('Test') | |
|             ->extend(array('Foo')); | |
|     } | |
| }
 | |
| 
 |