Blame view

vendor/phpunit/php-token-stream/tests/Token/ClassTest.php 3.13 KB
ad2e91f7   Mihail   move multyparser ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  <?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());
      }
  }