ClassTest.php (4234B)
1 <?php 2 /** 3 * php-token-stream 4 * 5 * Copyright (c) 2009-2013, Sebastian Bergmann <sebastian@phpunit.de>. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 12 * * Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 15 * * Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in 17 * the documentation and/or other materials provided with the 18 * distribution. 19 * 20 * * Neither the name of Sebastian Bergmann nor the names of his 21 * contributors may be used to endorse or promote products derived 22 * from this software without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 35 * POSSIBILITY OF SUCH DAMAGE. 36 * 37 * @package PHP_TokenStream 38 * @subpackage Tests 39 * @author Laurent Laville <pear@laurent-laville.org> 40 * @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de> 41 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License 42 * @since File available since Release 1.0.2 43 */ 44 45 if (!defined('TEST_FILES_PATH')) { 46 define( 47 'TEST_FILES_PATH', 48 dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 49 '_files' . DIRECTORY_SEPARATOR 50 ); 51 } 52 53 require_once 'PHP/Token/Stream.php'; 54 55 /** 56 * Tests for the PHP_Token_CLASS class. 57 * 58 * @package PHP_TokenStream 59 * @subpackage Tests 60 * @author Laurent Laville <pear@laurent-laville.org> 61 * @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de> 62 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License 63 * @version Release: @package_version@ 64 * @link http://github.com/sebastianbergmann/php-token-stream/ 65 * @since Class available since Release 1.0.2 66 */ 67 class PHP_Token_ClassTest extends PHPUnit_Framework_TestCase 68 { 69 protected $class; 70 protected $function; 71 72 protected function setUp() 73 { 74 $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source2.php'); 75 76 foreach ($ts as $token) { 77 if ($token instanceof PHP_Token_CLASS) { 78 $this->class = $token; 79 } 80 81 if ($token instanceof PHP_Token_FUNCTION) { 82 $this->function = $token; 83 break; 84 } 85 } 86 } 87 88 /** 89 * @covers PHP_Token_CLASS::getKeywords 90 */ 91 public function testGetClassKeywords() 92 { 93 $this->assertEquals('abstract', $this->class->getKeywords()); 94 } 95 96 /** 97 * @covers PHP_Token_FUNCTION::getKeywords 98 */ 99 public function testGetFunctionKeywords() 100 { 101 $this->assertEquals('abstract,static', $this->function->getKeywords()); 102 } 103 104 /** 105 * @covers PHP_Token_FUNCTION::getVisibility 106 */ 107 public function testGetFunctionVisibility() 108 { 109 $this->assertEquals('public', $this->function->getVisibility()); 110 } 111 112 public function testIssue19() 113 { 114 $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue19.php'); 115 116 foreach ($ts as $token) { 117 if ($token instanceof PHP_Token_CLASS) { 118 $this->assertFalse($token->hasInterfaces()); 119 } 120 } 121 } 122 123 public function testIssue30() 124 { 125 $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'issue30.php'); 126 $this->assertCount(1, $ts->getClasses()); 127 } 128 }