gluon-web-remote

Web remote Administration for big size of gluon routers
git clone git://archive.git.mtrnord.blog/MTRNord/gluon-web-remote.git
Log | Files | Refs | README

FunctionTest.php (6427B)


      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     Sebastian Bergmann <sebastian@phpunit.de>
     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.0
     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_FUNCTION class.
     57  *
     58  * @package    PHP_TokenStream
     59  * @subpackage Tests
     60  * @author     Sebastian Bergmann <sebastian@phpunit.de>
     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.0
     66  */
     67 class PHP_Token_FunctionTest extends PHPUnit_Framework_TestCase
     68 {
     69     protected $functions;
     70 
     71     protected function setUp()
     72     {
     73         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source.php');
     74 
     75         foreach ($ts as $token) {
     76             if ($token instanceof PHP_Token_FUNCTION) {
     77                 $this->functions[] = $token;
     78             }
     79         }
     80     }
     81 
     82     /**
     83      * @covers PHP_Token_FUNCTION::getArguments
     84      */
     85     public function testGetArguments()
     86     {
     87         $this->assertEquals(array(), $this->functions[0]->getArguments());
     88 
     89         $this->assertEquals(
     90           array('$baz' => 'Baz'), $this->functions[1]->getArguments()
     91         );
     92 
     93         $this->assertEquals(
     94           array('$foobar' => 'Foobar'), $this->functions[2]->getArguments()
     95         );
     96 
     97         $this->assertEquals(
     98           array('$barfoo' => 'Barfoo'), $this->functions[3]->getArguments()
     99         );
    100 
    101         $this->assertEquals(array(), $this->functions[4]->getArguments());
    102 
    103         $this->assertEquals(array('$x' => null, '$y' => null), $this->functions[5]->getArguments());
    104     }
    105 
    106     /**
    107      * @covers PHP_Token_FUNCTION::getName
    108      */
    109     public function testGetName()
    110     {
    111         $this->assertEquals('foo', $this->functions[0]->getName());
    112         $this->assertEquals('bar', $this->functions[1]->getName());
    113         $this->assertEquals('foobar', $this->functions[2]->getName());
    114         $this->assertEquals('barfoo', $this->functions[3]->getName());
    115         $this->assertEquals('baz', $this->functions[4]->getName());
    116     }
    117 
    118     /**
    119      * @covers PHP_Token::getLine
    120      */
    121     public function testGetLine()
    122     {
    123         $this->assertEquals(5, $this->functions[0]->getLine());
    124         $this->assertEquals(10, $this->functions[1]->getLine());
    125         $this->assertEquals(17, $this->functions[2]->getLine());
    126         $this->assertEquals(21, $this->functions[3]->getLine());
    127         $this->assertEquals(29, $this->functions[4]->getLine());
    128     }
    129 
    130     /**
    131      * @covers PHP_TokenWithScope::getEndLine
    132      */
    133     public function testGetEndLine()
    134     {
    135         $this->assertEquals(5, $this->functions[0]->getEndLine());
    136         $this->assertEquals(12, $this->functions[1]->getEndLine());
    137         $this->assertEquals(19, $this->functions[2]->getEndLine());
    138         $this->assertEquals(23, $this->functions[3]->getEndLine());
    139         $this->assertEquals(31, $this->functions[4]->getEndLine());
    140     }
    141 
    142     /**
    143      * @covers PHP_Token_FUNCTION::getDocblock
    144      */
    145     public function testGetDocblock()
    146     {
    147         $this->assertNull($this->functions[0]->getDocblock());
    148 
    149         $this->assertEquals(
    150           "/**\n     * @param Baz \$baz\n     */",
    151           $this->functions[1]->getDocblock()
    152         );
    153 
    154         $this->assertEquals(
    155           "/**\n     * @param Foobar \$foobar\n     */",
    156           $this->functions[2]->getDocblock()
    157         );
    158 
    159         $this->assertNull($this->functions[3]->getDocblock());
    160         $this->assertNull($this->functions[4]->getDocblock());
    161     }
    162 
    163     public function testSignature()
    164     {
    165         $ts = new PHP_Token_Stream(TEST_FILES_PATH . 'source5.php');
    166         $f  = $ts->getFunctions();
    167         $c  = $ts->getClasses();
    168         $i  = $ts->getInterfaces();
    169 
    170         $this->assertEquals(
    171           'foo($a, array $b, array $c = array())',
    172           $f['foo']['signature']
    173         );
    174 
    175         $this->assertEquals(
    176           'm($a, array $b, array $c = array())',
    177           $c['c']['methods']['m']['signature']
    178         );
    179 
    180         $this->assertEquals(
    181           'm($a, array $b, array $c = array())',
    182           $c['a']['methods']['m']['signature']
    183         );
    184 
    185         $this->assertEquals(
    186           'm($a, array $b, array $c = array())',
    187           $i['i']['methods']['m']['signature']
    188         );
    189     }
    190 }