+++ /dev/null
-<?php
-
-namespace PhpParser\Serializer;
-
-use PhpParser;
-
-class XMLTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * @covers PhpParser\Serializer\XML<extended>
- */
- public function testSerialize() {
- $code = <<<CODE
-<?php
-// comment
-/** doc comment */
-function functionName(&\$a = 0, \$b = 1.0) {
- echo 'Foo';
-}
-CODE;
- $xml = <<<XML
-<?xml version="1.0" encoding="UTF-8"?>
-<AST xmlns:node="http://nikic.github.com/PHPParser/XML/node" xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode" xmlns:attribute="http://nikic.github.com/PHPParser/XML/attribute" xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar">
- <scalar:array>
- <node:Stmt_Function>
- <attribute:startLine>
- <scalar:int>4</scalar:int>
- </attribute:startLine>
- <attribute:comments>
- <scalar:array>
- <comment isDocComment="false" line="2">// comment
-</comment>
- <comment isDocComment="true" line="3">/** doc comment */</comment>
- </scalar:array>
- </attribute:comments>
- <attribute:endLine>
- <scalar:int>6</scalar:int>
- </attribute:endLine>
- <subNode:byRef>
- <scalar:false/>
- </subNode:byRef>
- <subNode:name>
- <scalar:string>functionName</scalar:string>
- </subNode:name>
- <subNode:params>
- <scalar:array>
- <node:Param>
- <attribute:startLine>
- <scalar:int>4</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>4</scalar:int>
- </attribute:endLine>
- <subNode:type>
- <scalar:null/>
- </subNode:type>
- <subNode:byRef>
- <scalar:true/>
- </subNode:byRef>
- <subNode:variadic>
- <scalar:false/>
- </subNode:variadic>
- <subNode:name>
- <scalar:string>a</scalar:string>
- </subNode:name>
- <subNode:default>
- <node:Scalar_LNumber>
- <attribute:startLine>
- <scalar:int>4</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>4</scalar:int>
- </attribute:endLine>
- <attribute:kind>
- <scalar:int>10</scalar:int>
- </attribute:kind>
- <subNode:value>
- <scalar:int>0</scalar:int>
- </subNode:value>
- </node:Scalar_LNumber>
- </subNode:default>
- </node:Param>
- <node:Param>
- <attribute:startLine>
- <scalar:int>4</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>4</scalar:int>
- </attribute:endLine>
- <subNode:type>
- <scalar:null/>
- </subNode:type>
- <subNode:byRef>
- <scalar:false/>
- </subNode:byRef>
- <subNode:variadic>
- <scalar:false/>
- </subNode:variadic>
- <subNode:name>
- <scalar:string>b</scalar:string>
- </subNode:name>
- <subNode:default>
- <node:Scalar_DNumber>
- <attribute:startLine>
- <scalar:int>4</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>4</scalar:int>
- </attribute:endLine>
- <subNode:value>
- <scalar:float>1</scalar:float>
- </subNode:value>
- </node:Scalar_DNumber>
- </subNode:default>
- </node:Param>
- </scalar:array>
- </subNode:params>
- <subNode:returnType>
- <scalar:null/>
- </subNode:returnType>
- <subNode:stmts>
- <scalar:array>
- <node:Stmt_Echo>
- <attribute:startLine>
- <scalar:int>5</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>5</scalar:int>
- </attribute:endLine>
- <subNode:exprs>
- <scalar:array>
- <node:Scalar_String>
- <attribute:startLine>
- <scalar:int>5</scalar:int>
- </attribute:startLine>
- <attribute:endLine>
- <scalar:int>5</scalar:int>
- </attribute:endLine>
- <attribute:kind>
- <scalar:int>1</scalar:int>
- </attribute:kind>
- <subNode:value>
- <scalar:string>Foo</scalar:string>
- </subNode:value>
- </node:Scalar_String>
- </scalar:array>
- </subNode:exprs>
- </node:Stmt_Echo>
- </scalar:array>
- </subNode:stmts>
- </node:Stmt_Function>
- </scalar:array>
-</AST>
-XML;
-
- $parser = new PhpParser\Parser\Php7(new PhpParser\Lexer);
- $serializer = new XML;
-
- $code = str_replace("\r\n", "\n", $code);
- $stmts = $parser->parse($code);
- $this->assertXmlStringEqualsXmlString($xml, $serializer->serialize($stmts));
- }
-
- /**
- * @expectedException \InvalidArgumentException
- * @expectedExceptionMessage Unexpected node type
- */
- public function testError() {
- $serializer = new XML;
- $serializer->serialize(array(new \stdClass));
- }
-}