Вход Регистрация
Файл: gapps/vendor/psy/psysh/test/Psy/Test/CodeCleanerTest.php
Строк: 77
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2015 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace PsyTest;

use 
PsyCodeCleaner;

class 
CodeCleanerTest extends PHPUnit_Framework_TestCase
{
    
/**
     * @dataProvider semicolonCodeProvider
     */
    
public function testAutomaticSemicolons(array $lines$requireSemicolons$expected)
    {
        
$cc = new CodeCleaner();
        
$this->assertEquals($expected$cc->clean($lines$requireSemicolons));
    }

    public function 
semicolonCodeProvider()
    {
        return array(
            array(array(
'true'),  false'return true;'),
            array(array(
'true;'), false'return true;'),
            array(array(
'true;'), true,  'return true;'),
            array(array(
'true'),  true,  false),

            array(array(
'echo "foo";''true'), false"echo 'foo';nreturn true;"),
            array(array(
'echo "foo";''true'), true,  false),
        );
    }

    
/**
     * @dataProvider unclosedStatementsProvider
     */
    
public function testUnclosedStatements(array $lines$isUnclosed)
    {
        
$cc  = new CodeCleaner();
        
$res $cc->clean($lines);

        if (
$isUnclosed) {
            
$this->assertFalse($res);
        } else {
            
$this->assertNotFalse($res);
        }
    }

    public function 
unclosedStatementsProvider()
    {
        return array(
            array(array(
'echo "'),   true),
            array(array(
'echo ''),  true),
            array(array('
if (1) {'), true),

            array(array('
echo ""'),   false),
            array(array("echo ''"),   false),
            array(array('
if (1) {}'), false),

            array(array("$content = <<<EOSn"),   true),
            array(array("$content = <<<'
EOS'n"), true),
        );
    }

    /**
     * @dataProvider invalidStatementsProvider
     * @expectedException PsyExceptionParseErrorException
     */
    public function testInvalidStatementsThrowParseErrors($code)
    {
        $cc = new CodeCleaner();
        $cc->clean(array($code));
    }

    public function invalidStatementsProvider()
    {
        return array(
            array('
function "what'),
            array("
function 'what"),
            array('
echo }'),
            array('
echo {'),
            array('
if (1) }'),
            array('
echo """'),
            array("
echo '''"),
            array('
$foo "bar'),
            array('
$foo 'bar'),
        );
    }
}
Онлайн: 1
Реклама