Security update for Core, with self-updated composer
[yaffs-website] / vendor / phpunit / php-token-stream / tests / Token / ClassTest.php
diff --git a/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php b/vendor/phpunit/php-token-stream/tests/Token/ClassTest.php
new file mode 100644 (file)
index 0000000..d1b25d8
--- /dev/null
@@ -0,0 +1,123 @@
+<?php
+/*
+ * This file is part of the PHP_TokenStream package.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * Tests for the PHP_Token_CLASS class.
+ *
+ * @package    PHP_TokenStream
+ * @subpackage Tests
+ * @author     Laurent Laville <pear@laurent-laville.org>
+ * @copyright  Sebastian Bergmann <sebastian@phpunit.de>
+ * @license    http://www.opensource.org/licenses/BSD-3-Clause  The BSD 3-Clause License
+ * @version    Release: @package_version@
+ * @link       http://github.com/sebastianbergmann/php-token-stream/
+ * @since      Class available since Release 1.0.2
+ */
+class PHP_Token_ClassTest extends PHPUnit_Framework_TestCase
+{
+    protected $class;
+    protected $function;
+
+    protected function setUp()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source2.php');
+
+        foreach ($ts as $token) {
+            if ($token instanceof PHP_Token_CLASS) {
+                $this->class = $token;
+            }
+
+            if ($token instanceof PHP_Token_FUNCTION) {
+                $this->function = $token;
+                break;
+            }
+        }
+    }
+
+    /**
+     * @covers PHP_Token_CLASS::getKeywords
+     */
+    public function testGetClassKeywords()
+    {
+        $this->assertEquals('abstract', $this->class->getKeywords());
+    }
+
+    /**
+     * @covers PHP_Token_FUNCTION::getKeywords
+     */
+    public function testGetFunctionKeywords()
+    {
+        $this->assertEquals('abstract,static', $this->function->getKeywords());
+    }
+
+    /**
+     * @covers PHP_Token_FUNCTION::getVisibility
+     */
+    public function testGetFunctionVisibility()
+    {
+        $this->assertEquals('public', $this->function->getVisibility());
+    }
+
+    public function testIssue19()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue19.php');
+
+        foreach ($ts as $token) {
+            if ($token instanceof PHP_Token_CLASS) {
+                $this->assertFalse($token->hasInterfaces());
+            }
+        }
+    }
+
+    public function testIssue30()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue30.php');
+        $this->assertCount(1, $ts->getClasses());
+    }
+
+    /**
+     * @requires PHP 7
+     */
+    public function testAnonymousClassesAreHandledCorrectly()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class.php');
+
+        $classes = $ts->getClasses();
+
+        $this->assertEquals(array('class_with_method_that_declares_anonymous_class'), array_keys($classes));
+    }
+
+    /**
+     * @requires PHP 7
+     * @ticket   https://github.com/sebastianbergmann/php-token-stream/issues/52
+     */
+    public function testAnonymousClassesAreHandledCorrectly2()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'class_with_method_that_declares_anonymous_class2.php');
+
+        $classes = $ts->getClasses();
+
+        $this->assertEquals(array('Test'), array_keys($classes));
+        $this->assertEquals(array('methodOne', 'methodTwo'), array_keys($classes['Test']['methods']));
+
+        $this->assertEmpty($ts->getFunctions());
+    }
+
+    /**
+     * @requires PHP 5.6
+     */
+    public function testImportedFunctionsAreHandledCorrectly()
+    {
+        $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'classUsesNamespacedFunction.php');
+
+        $this->assertEmpty($ts->getFunctions());
+        $this->assertCount(1, $ts->getClasses());
+    }
+}