64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace PhpParser;
 | |
| 
 | |
| use PhpParser\Node\Expr;
 | |
| use PhpParser\Node\Scalar\String_;
 | |
| use PhpParser\Node\Stmt;
 | |
| use PhpParser\PrettyPrinter\Standard;
 | |
| 
 | |
| require_once __DIR__ . '/CodeTestAbstract.php';
 | |
| 
 | |
| class PrettyPrinterTest extends CodeTestAbstract
 | |
| {
 | |
|     protected function doTestPrettyPrintMethod($method, $name, $code, $dump) {
 | |
|         $parser = new Parser(new Lexer\Emulative);
 | |
|         $prettyPrinter = new Standard;
 | |
| 
 | |
|         $stmts = $parser->parse($code);
 | |
|         $this->assertSame(
 | |
|             $this->canonicalize($dump),
 | |
|             $this->canonicalize($prettyPrinter->$method($stmts)),
 | |
|             $name
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider provideTestPrettyPrint
 | |
|      * @covers PhpParser\PrettyPrinter\Standard<extended>
 | |
|      */
 | |
|     public function testPrettyPrint($name, $code, $dump) {
 | |
|         $this->doTestPrettyPrintMethod('prettyPrint', $name, $code, $dump);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @dataProvider provideTestPrettyPrintFile
 | |
|      * @covers PhpParser\PrettyPrinter\Standard<extended>
 | |
|      */
 | |
|     public function testPrettyPrintFile($name, $code, $dump) {
 | |
|         $this->doTestPrettyPrintMethod('prettyPrintFile', $name, $code, $dump);
 | |
|     }
 | |
| 
 | |
|     public function provideTestPrettyPrint() {
 | |
|         return $this->getTests(__DIR__ . '/../code/prettyPrinter', 'test');
 | |
|     }
 | |
| 
 | |
|     public function provideTestPrettyPrintFile() {
 | |
|         return $this->getTests(__DIR__ . '/../code/prettyPrinter', 'file-test');
 | |
|     }
 | |
| 
 | |
|     public function testPrettyPrintExpr() {
 | |
|         $prettyPrinter = new Standard;
 | |
|         $expr = new Expr\BinaryOp\Mul(
 | |
|             new Expr\BinaryOp\Plus(new Expr\Variable('a'), new Expr\Variable('b')),
 | |
|             new Expr\Variable('c')
 | |
|         );
 | |
|         $this->assertEquals('($a + $b) * $c', $prettyPrinter->prettyPrintExpr($expr));
 | |
| 
 | |
|         $expr = new Expr\Closure(array(
 | |
|             'stmts' => array(new Stmt\Return_(new String_("a\nb")))
 | |
|         ));
 | |
|         $this->assertEquals("function () {\n    return 'a\nb';\n}", $prettyPrinter->prettyPrintExpr($expr));
 | |
|     }
 | |
| }
 |