radarrplexorganizrnginxsonarrdashboardserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpc
		
		
		
		
			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.
		
		
		
		
		
			
		
			
				
					
					
						
							108 lines
						
					
					
						
							3.5 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							108 lines
						
					
					
						
							3.5 KiB
						
					
					
				| <?php | |
| 
 | |
| namespace PhpParser; | |
| 
 | |
| use PhpParser\Node\Expr; | |
| 
 | |
| class BuilderFactoryTest extends \PHPUnit_Framework_TestCase | |
| { | |
|     /** | |
|      * @dataProvider provideTestFactory | |
|      */ | |
|     public function testFactory($methodName, $className) { | |
|         $factory = new BuilderFactory; | |
|         $this->assertInstanceOf($className, $factory->$methodName('test')); | |
|     } | |
| 
 | |
|     public function provideTestFactory() { | |
|         return array( | |
|             array('namespace', 'PhpParser\Builder\Namespace_'), | |
|             array('class',     'PhpParser\Builder\Class_'), | |
|             array('interface', 'PhpParser\Builder\Interface_'), | |
|             array('trait',     'PhpParser\Builder\Trait_'), | |
|             array('method',    'PhpParser\Builder\Method'), | |
|             array('function',  'PhpParser\Builder\Function_'), | |
|             array('property',  'PhpParser\Builder\Property'), | |
|             array('param',     'PhpParser\Builder\Param'), | |
|             array('use',       'PhpParser\Builder\Use_'), | |
|         ); | |
|     } | |
| 
 | |
|     public function testNonExistingMethod() { | |
|         $this->setExpectedException('LogicException', 'Method "foo" does not exist'); | |
|         $factory = new BuilderFactory(); | |
|         $factory->foo(); | |
|     } | |
| 
 | |
|     public function testIntegration() { | |
|         $factory = new BuilderFactory; | |
|         $node = $factory->namespace('Name\Space') | |
|             ->addStmt($factory->use('Foo\Bar\SomeOtherClass')) | |
|             ->addStmt($factory->use('Foo\Bar')->as('A')) | |
|             ->addStmt($factory | |
|                 ->class('SomeClass') | |
|                 ->extend('SomeOtherClass') | |
|                 ->implement('A\Few', '\Interfaces') | |
|                 ->makeAbstract() | |
| 
 | |
|                 ->addStmt($factory->method('firstMethod')) | |
| 
 | |
|                 ->addStmt($factory->method('someMethod') | |
|                     ->makePublic() | |
|                     ->makeAbstract() | |
|                     ->addParam($factory->param('someParam')->setTypeHint('SomeClass')) | |
|                     ->setDocComment('/** | |
|                                       * This method does something. | |
|                                       * | |
|                                       * @param SomeClass And takes a parameter | |
|                                       */')) | |
| 
 | |
|                 ->addStmt($factory->method('anotherMethod') | |
|                     ->makeProtected() | |
|                     ->addParam($factory->param('someParam')->setDefault('test')) | |
|                     ->addStmt(new Expr\Print_(new Expr\Variable('someParam')))) | |
| 
 | |
|                 ->addStmt($factory->property('someProperty')->makeProtected()) | |
|                 ->addStmt($factory->property('anotherProperty') | |
|                     ->makePrivate() | |
|                     ->setDefault(array(1, 2, 3)))) | |
|             ->getNode() | |
|         ; | |
| 
 | |
|         $expected = <<<'EOC' | |
| <?php | |
|  | |
| namespace Name\Space; | |
|  | |
| use Foo\Bar\SomeOtherClass; | |
| use Foo\Bar as A; | |
| abstract class SomeClass extends SomeOtherClass implements A\Few, \Interfaces | |
| { | |
|     protected $someProperty; | |
|     private $anotherProperty = array(1, 2, 3); | |
|     function firstMethod() | |
|     { | |
|     } | |
|     /** | |
|      * This method does something. | |
|      * | |
|      * @param SomeClass And takes a parameter | |
|      */ | |
|     public abstract function someMethod(SomeClass $someParam); | |
|     protected function anotherMethod($someParam = 'test') | |
|     { | |
|         print $someParam; | |
|     } | |
| } | |
| EOC; | |
| 
 | |
|         $stmts = array($node); | |
|         $prettyPrinter = new PrettyPrinter\Standard(); | |
|         $generated = $prettyPrinter->prettyPrintFile($stmts); | |
| 
 | |
|         $this->assertEquals( | |
|             str_replace("\r\n", "\n", $expected), | |
|             str_replace("\r\n", "\n", $generated) | |
|         ); | |
|     } | |
| }
 | |
| 
 |