PhpParser\ParserTest::testAttributeAssignment PHP Method

testAttributeAssignment() public method

    public function testAttributeAssignment()
    {
        $lexer = new Lexer(array('usedAttributes' => array('comments', 'startLine', 'endLine', 'startTokenPos', 'endTokenPos')));
        $code = <<<'EOC'
<?php
/** Doc comment */
function test($a) {
    // Line
    // Comments
    echo $a;
}
EOC;
        $code = canonicalize($code);
        $parser = $this->getParser($lexer);
        $stmts = $parser->parse($code);
        /** @var \PhpParser\Node\Stmt\Function_ $fn */
        $fn = $stmts[0];
        $this->assertInstanceOf('PhpParser\\Node\\Stmt\\Function_', $fn);
        $this->assertEquals(array('comments' => array(new Comment\Doc('/** Doc comment */', 2, 6)), 'startLine' => 3, 'endLine' => 7, 'startTokenPos' => 3, 'endTokenPos' => 21), $fn->getAttributes());
        $param = $fn->params[0];
        $this->assertInstanceOf('PhpParser\\Node\\Param', $param);
        $this->assertEquals(array('startLine' => 3, 'endLine' => 3, 'startTokenPos' => 7, 'endTokenPos' => 7), $param->getAttributes());
        /** @var \PhpParser\Node\Stmt\Echo_ $echo */
        $echo = $fn->stmts[0];
        $this->assertInstanceOf('PhpParser\\Node\\Stmt\\Echo_', $echo);
        $this->assertEquals(array('comments' => array(new Comment("// Line\n", 4, 49), new Comment("// Comments\n", 5, 61)), 'startLine' => 6, 'endLine' => 6, 'startTokenPos' => 16, 'endTokenPos' => 19), $echo->getAttributes());
        /** @var \PhpParser\Node\Expr\Variable $var */
        $var = $echo->exprs[0];
        $this->assertInstanceOf('PhpParser\\Node\\Expr\\Variable', $var);
        $this->assertEquals(array('startLine' => 6, 'endLine' => 6, 'startTokenPos' => 18, 'endTokenPos' => 18), $var->getAttributes());
    }