Security update for Core, with self-updated composer
[yaffs-website] / vendor / nikic / php-parser / test / PhpParser / Builder / FunctionTest.php
diff --git a/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php b/vendor/nikic/php-parser/test/PhpParser/Builder/FunctionTest.php
new file mode 100644 (file)
index 0000000..f6a9381
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+namespace PhpParser\Builder;
+
+use PhpParser\Comment;
+use PhpParser\Node;
+use PhpParser\Node\Expr\Print_;
+use PhpParser\Node\Scalar\String_;
+use PhpParser\Node\Stmt;
+
+class FunctionTest extends \PHPUnit_Framework_TestCase
+{
+    public function createFunctionBuilder($name) {
+        return new Function_($name);
+    }
+
+    public function testReturnByRef() {
+        $node = $this->createFunctionBuilder('test')
+            ->makeReturnByRef()
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\Function_('test', array(
+                'byRef' => true
+            )),
+            $node
+        );
+    }
+
+    public function testParams() {
+        $param1 = new Node\Param('test1');
+        $param2 = new Node\Param('test2');
+        $param3 = new Node\Param('test3');
+
+        $node = $this->createFunctionBuilder('test')
+            ->addParam($param1)
+            ->addParams(array($param2, $param3))
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\Function_('test', array(
+                'params' => array($param1, $param2, $param3)
+            )),
+            $node
+        );
+    }
+
+    public function testStmts() {
+        $stmt1 = new Print_(new String_('test1'));
+        $stmt2 = new Print_(new String_('test2'));
+        $stmt3 = new Print_(new String_('test3'));
+
+        $node = $this->createFunctionBuilder('test')
+            ->addStmt($stmt1)
+            ->addStmts(array($stmt2, $stmt3))
+            ->getNode()
+        ;
+
+        $this->assertEquals(
+            new Stmt\Function_('test', array(
+                'stmts' => array($stmt1, $stmt2, $stmt3)
+            )),
+            $node
+        );
+    }
+
+    public function testDocComment() {
+        $node = $this->createFunctionBuilder('test')
+            ->setDocComment('/** Test */')
+            ->getNode();
+
+        $this->assertEquals(new Stmt\Function_('test', array(), array(
+            'comments' => array(new Comment\Doc('/** Test */'))
+        )), $node);
+    }
+
+    public function testReturnType() {
+        $node = $this->createFunctionBuilder('test')
+            ->setReturnType('void')
+            ->getNode();
+
+        $this->assertEquals(new Stmt\Function_('test', array(
+            'returnType' => 'void'
+        ), array()), $node);
+    }
+
+    /**
+     * @expectedException \LogicException
+     * @expectedExceptionMessage void type cannot be nullable
+     */
+    public function testInvalidNullableVoidType() {
+        $this->createFunctionBuilder('test')->setReturnType('?void');
+    }
+
+    /**
+     * @expectedException \LogicException
+     * @expectedExceptionMessage Expected parameter node, got "Name"
+     */
+    public function testInvalidParamError() {
+        $this->createFunctionBuilder('test')
+            ->addParam(new Node\Name('foo'))
+        ;
+    }
+}