2015-08-17 17:00:26 -07:00
< ? 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 ());
}
2015-10-08 11:40:12 -07:00
/**
* @ 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 ());
}
2015-08-17 17:00:26 -07:00
}