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';
}
}