Вход Регистрация
Файл: gapps/vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php
Строк: 86
<?php
/*
 * This file is part of PHPUnit.
 *
 * (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.
 */

use SebastianBergmannDiffDiffer;

/**
 * ...
 *
 * @since Class available since Release 3.5.0
 */
class PHPUnit_Framework_Constraint_StringMatches extends PHPUnit_Framework_Constraint_PCREMatch
{
    
/**
     * @var string
     */
    
protected $string;

    
/**
     * @param string $string
     */
    
public function __construct($string)
    {
        
parent::__construct($string);

        
$this->pattern $this->createPatternFromFormat(
            
preg_replace('/rn/'"n"$string)
        );

        
$this->string $string;
    }

    protected function 
failureDescription($other)
    {
        return 
'format description matches text';
    }

    protected function 
additionalFailureDescription($other)
    {
        
$from preg_split('(rn|r|n)'$this->string);
        
$to   preg_split('(rn|r|n)'$other);

        foreach (
$from as $index => $line) {
            if (isset(
$to[$index]) && $line !== $to[$index]) {
                
$line $this->createPatternFromFormat($line);

                if (
preg_match($line$to[$index]) > 0) {
                    
$from[$index] = $to[$index];
                }
            }
        }

        
$this->string implode("n"$from);
        
$other        implode("n"$to);

        
$differ = new Differ("--- Expectedn+++ Actualn");

        return 
$differ->diff($this->string$other);
    }

    protected function 
createPatternFromFormat($string)
    {
        
$string str_replace(
            array(
            
'%e',
            
'%s',
            
'%S',
            
'%a',
            
'%A',
            
'%w',
            
'%i',
            
'%d',
            
'%x',
            
'%f',
            
'%c'
            
),
            array(
            
'\' . DIRECTORY_SEPARATOR,
            '
[^rn]+',
            '
[^rn]*',
            '
.+',
            '
.*',
            '
s*',
            '
[+-]?d+',
            '
d+',
            '
[0-9a-fA-F]+',
            '
[+-]?.?d+.?d*(?:[Ee][+-]?d+)?',
            '
.'
            ),
            preg_quote($string, '
/')
        );

        return '
/^' . $string . '$/s';
    }
}
Онлайн: 0
Реклама