annotate vendor/nikic/php-parser/test/PhpParser/NodeDumperTest.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 5fb285c0d0e3
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 namespace PhpParser;
Chris@0 4
Chris@0 5 class NodeDumperTest extends \PHPUnit_Framework_TestCase
Chris@0 6 {
Chris@0 7 private function canonicalize($string) {
Chris@0 8 return str_replace("\r\n", "\n", $string);
Chris@0 9 }
Chris@0 10
Chris@0 11 /**
Chris@0 12 * @dataProvider provideTestDump
Chris@0 13 */
Chris@0 14 public function testDump($node, $dump) {
Chris@0 15 $dumper = new NodeDumper;
Chris@0 16
Chris@0 17 $this->assertSame($this->canonicalize($dump), $this->canonicalize($dumper->dump($node)));
Chris@0 18 }
Chris@0 19
Chris@0 20 public function provideTestDump() {
Chris@0 21 return array(
Chris@0 22 array(
Chris@0 23 array(),
Chris@0 24 'array(
Chris@0 25 )'
Chris@0 26 ),
Chris@0 27 array(
Chris@0 28 array('Foo', 'Bar', 'Key' => 'FooBar'),
Chris@0 29 'array(
Chris@0 30 0: Foo
Chris@0 31 1: Bar
Chris@0 32 Key: FooBar
Chris@0 33 )'
Chris@0 34 ),
Chris@0 35 array(
Chris@0 36 new Node\Name(array('Hallo', 'World')),
Chris@0 37 'Name(
Chris@0 38 parts: array(
Chris@0 39 0: Hallo
Chris@0 40 1: World
Chris@0 41 )
Chris@0 42 )'
Chris@0 43 ),
Chris@0 44 array(
Chris@0 45 new Node\Expr\Array_(array(
Chris@0 46 new Node\Expr\ArrayItem(new Node\Scalar\String_('Foo'))
Chris@0 47 )),
Chris@0 48 'Expr_Array(
Chris@0 49 items: array(
Chris@0 50 0: Expr_ArrayItem(
Chris@0 51 key: null
Chris@0 52 value: Scalar_String(
Chris@0 53 value: Foo
Chris@0 54 )
Chris@0 55 byRef: false
Chris@0 56 )
Chris@0 57 )
Chris@0 58 )'
Chris@0 59 ),
Chris@0 60 );
Chris@0 61 }
Chris@0 62
Chris@0 63 public function testDumpWithPositions() {
Chris@0 64 $parser = (new ParserFactory)->create(
Chris@0 65 ParserFactory::ONLY_PHP7,
Chris@0 66 new Lexer(['usedAttributes' => ['startLine', 'endLine', 'startFilePos', 'endFilePos']])
Chris@0 67 );
Chris@0 68 $dumper = new NodeDumper(['dumpPositions' => true]);
Chris@0 69
Chris@0 70 $code = "<?php\n\$a = 1;\necho \$a;";
Chris@0 71 $expected = <<<'OUT'
Chris@0 72 array(
Chris@0 73 0: Expr_Assign[2:1 - 2:6](
Chris@0 74 var: Expr_Variable[2:1 - 2:2](
Chris@0 75 name: a
Chris@0 76 )
Chris@0 77 expr: Scalar_LNumber[2:6 - 2:6](
Chris@0 78 value: 1
Chris@0 79 )
Chris@0 80 )
Chris@0 81 1: Stmt_Echo[3:1 - 3:8](
Chris@0 82 exprs: array(
Chris@0 83 0: Expr_Variable[3:6 - 3:7](
Chris@0 84 name: a
Chris@0 85 )
Chris@0 86 )
Chris@0 87 )
Chris@0 88 )
Chris@0 89 OUT;
Chris@0 90
Chris@0 91 $stmts = $parser->parse($code);
Chris@0 92 $dump = $dumper->dump($stmts, $code);
Chris@0 93
Chris@0 94 $this->assertSame($this->canonicalize($expected), $this->canonicalize($dump));
Chris@0 95 }
Chris@0 96
Chris@0 97 /**
Chris@0 98 * @expectedException \InvalidArgumentException
Chris@0 99 * @expectedExceptionMessage Can only dump nodes and arrays.
Chris@0 100 */
Chris@0 101 public function testError() {
Chris@0 102 $dumper = new NodeDumper;
Chris@0 103 $dumper->dump(new \stdClass);
Chris@0 104 }
Chris@0 105 }