Security update for Core, with self-updated composer
[yaffs-website] / vendor / nikic / php-parser / test / PhpParser / Serializer / XMLTest.php
diff --git a/vendor/nikic/php-parser/test/PhpParser/Serializer/XMLTest.php b/vendor/nikic/php-parser/test/PhpParser/Serializer/XMLTest.php
new file mode 100644 (file)
index 0000000..e1186f4
--- /dev/null
@@ -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));
+    }
+}