nginxsonarrradarrplexorganizrdashboardbookmarkapplication-dashboardmuximuxlandingpagestartpagelandinghtpcserverhomepagesabnzbdheimdallembycouchpotatonzbget
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							172 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							172 lines
						
					
					
						
							4.6 KiB
						
					
					
				
								<?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));
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |