1 <?php declare(strict_types=1);
5 use PHPUnit\Framework\TestCase;
7 class NodeDumperTest extends TestCase
9 private function canonicalize($string) {
10 return str_replace("\r\n", "\n", $string);
14 * @dataProvider provideTestDump
16 public function testDump($node, $dump) {
17 $dumper = new NodeDumper;
19 $this->assertSame($this->canonicalize($dump), $this->canonicalize($dumper->dump($node)));
22 public function provideTestDump() {
30 ['Foo', 'Bar', 'Key' => 'FooBar'],
38 new Node\Name(['Hallo', 'World']),
47 new Node\Expr\Array_([
48 new Node\Expr\ArrayItem(new Node\Scalar\String_('Foo'))
65 public function testDumpWithPositions() {
66 $parser = (new ParserFactory)->create(
67 ParserFactory::ONLY_PHP7,
68 new Lexer(['usedAttributes' => ['startLine', 'endLine', 'startFilePos', 'endFilePos']])
70 $dumper = new NodeDumper(['dumpPositions' => true]);
72 $code = "<?php\n\$a = 1;\necho \$a;";
75 0: Stmt_Expression[2:1 - 2:7](
76 expr: Expr_Assign[2:1 - 2:6](
77 var: Expr_Variable[2:1 - 2:2](
80 expr: Scalar_LNumber[2:6 - 2:6](
85 1: Stmt_Echo[3:1 - 3:8](
87 0: Expr_Variable[3:6 - 3:7](
95 $stmts = $parser->parse($code);
96 $dump = $dumper->dump($stmts, $code);
98 $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump));
102 * @expectedException \InvalidArgumentException
103 * @expectedExceptionMessage Can only dump nodes and arrays.
105 public function testError() {
106 $dumper = new NodeDumper;
107 $dumper->dump(new \stdClass);