Chris@13: assertSame($this->canonicalize($dump), $this->canonicalize($dumper->dump($node))); Chris@0: } Chris@0: Chris@0: public function provideTestDump() { Chris@13: return [ Chris@13: [ Chris@13: [], Chris@0: 'array( Chris@0: )' Chris@13: ], Chris@13: [ Chris@13: ['Foo', 'Bar', 'Key' => 'FooBar'], Chris@0: 'array( Chris@0: 0: Foo Chris@0: 1: Bar Chris@0: Key: FooBar Chris@0: )' Chris@13: ], Chris@13: [ Chris@13: new Node\Name(['Hallo', 'World']), Chris@0: 'Name( Chris@0: parts: array( Chris@0: 0: Hallo Chris@0: 1: World Chris@0: ) Chris@0: )' Chris@13: ], Chris@13: [ Chris@13: new Node\Expr\Array_([ Chris@0: new Node\Expr\ArrayItem(new Node\Scalar\String_('Foo')) Chris@13: ]), Chris@0: 'Expr_Array( Chris@0: items: array( Chris@0: 0: Expr_ArrayItem( Chris@0: key: null Chris@0: value: Scalar_String( Chris@0: value: Foo Chris@0: ) Chris@0: byRef: false Chris@0: ) Chris@0: ) Chris@0: )' Chris@13: ], Chris@13: ]; Chris@0: } Chris@0: Chris@0: public function testDumpWithPositions() { Chris@0: $parser = (new ParserFactory)->create( Chris@0: ParserFactory::ONLY_PHP7, Chris@0: new Lexer(['usedAttributes' => ['startLine', 'endLine', 'startFilePos', 'endFilePos']]) Chris@0: ); Chris@0: $dumper = new NodeDumper(['dumpPositions' => true]); Chris@0: Chris@0: $code = "parse($code); Chris@0: $dump = $dumper->dump($stmts, $code); Chris@0: Chris@0: $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump)); Chris@0: } Chris@0: Chris@0: public function testError() { Chris@17: $this->expectException(\InvalidArgumentException::class); Chris@17: $this->expectExceptionMessage('Can only dump nodes and arrays.'); Chris@0: $dumper = new NodeDumper; Chris@0: $dumper->dump(new \stdClass); Chris@0: } Chris@0: }