class PHPUnit_Framework_Constraint_StringMatches in Zircon Profile 8
Same name and namespace in other branches
- 8.0 vendor/phpunit/phpunit/src/Framework/Constraint/StringMatches.php \PHPUnit_Framework_Constraint_StringMatches
 
...
@since Class available since Release 3.5.0
Hierarchy
- class \PHPUnit_Framework_Constraint implements \Countable, PHPUnit_Framework_SelfDescribing
 
Expanded class hierarchy of PHPUnit_Framework_Constraint_StringMatches
File
- vendor/
phpunit/ phpunit/ src/ Framework/ Constraint/ StringMatches.php, line 18  
View source
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('/\\r\\n/', "\n", $string));
    $this->string = $string;
  }
  protected function failureDescription($other) {
    return 'format description matches text';
  }
  protected function additionalFailureDescription($other) {
    $from = preg_split('(\\r\\n|\\r|\\n)', $this->string);
    $to = preg_split('(\\r\\n|\\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("--- Expected\n+++ Actual\n");
    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,
      '[^\\r\\n]+',
      '[^\\r\\n]*',
      '.+',
      '.*',
      '\\s*',
      '[+-]?\\d+',
      '\\d+',
      '[0-9a-fA-F]+',
      '[+-]?\\.?\\d+\\.?\\d*(?:[Ee][+-]?\\d+)?',
      '.',
    ), preg_quote($string, '/'));
    return '/^' . $string . '$/s';
  }
}