Mercurial > hg > isophonics-drupal-site
diff vendor/nikic/php-parser/test/PhpParser/Serializer/XMLTest.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/nikic/php-parser/test/PhpParser/Serializer/XMLTest.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,172 @@ +<?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)); + } +}