5 class NodeDumperTest extends \PHPUnit_Framework_TestCase
7 private function canonicalize($string) {
8 return str_replace("\r\n", "\n", $string);
12 * @dataProvider provideTestDump
14 public function testDump($node, $dump) {
15 $dumper = new NodeDumper;
17 $this->assertSame($this->canonicalize($dump), $this->canonicalize($dumper->dump($node)));
20 public function provideTestDump() {
28 array('Foo', 'Bar', 'Key' => 'FooBar'),
36 new Node\Name(array('Hallo', 'World')),
45 new Node\Expr\Array_(array(
46 new Node\Expr\ArrayItem(new Node\Scalar\String_('Foo'))
63 public function testDumpWithPositions() {
64 $parser = (new ParserFactory)->create(
65 ParserFactory::ONLY_PHP7,
66 new Lexer(['usedAttributes' => ['startLine', 'endLine', 'startFilePos', 'endFilePos']])
68 $dumper = new NodeDumper(['dumpPositions' => true]);
70 $code = "<?php\n\$a = 1;\necho \$a;";
73 0: Expr_Assign[2:1 - 2:6](
74 var: Expr_Variable[2:1 - 2:2](
77 expr: Scalar_LNumber[2:6 - 2:6](
81 1: Stmt_Echo[3:1 - 3:8](
83 0: Expr_Variable[3:6 - 3:7](
91 $stmts = $parser->parse($code);
92 $dump = $dumper->dump($stmts, $code);
94 $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump));
98 * @expectedException \InvalidArgumentException
99 * @expectedExceptionMessage Can only dump nodes and arrays.
101 public function testError() {
102 $dumper = new NodeDumper;
103 $dumper->dump(new \stdClass);