PATH:
home
/
centosnipponia
/
public_html
/
apptt-oldgit
/
vendor
/
phpunit
/
phpunit
/
src
/
Framework
/
Constraint
<?php declare(strict_types=1); /* * 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. */ namespace PHPUnit\Framework\Constraint; use const DIRECTORY_SEPARATOR; use function explode; use function implode; use function preg_match; use function preg_quote; use function preg_replace; use function strtr; use SebastianBergmann\Diff\Differ; /** * ... */ final class StringMatchesFormatDescription extends RegularExpression { /** * @var string */ private $string; public function __construct(string $string) { parent::__construct( $this->createPatternFromFormat( $this->convertNewlines($string) ) ); $this->string = $string; } /** * Evaluates the constraint for parameter $other. Returns true if the * constraint is met, false otherwise. * * @param mixed $other value or object to evaluate */ protected function matches($other): bool { return parent::matches( $this->convertNewlines($other) ); } protected function failureDescription($other): string { return 'string matches format description'; } protected function additionalFailureDescription($other): string { $from = explode("\n", $this->string); $to = explode("\n", $this->convertNewlines($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); return (new Differ("--- Expected\n+++ Actual\n"))->diff($this->string, $other); } private function createPatternFromFormat(string $string): string { $string = strtr( preg_quote($string, '/'), [ '%%' => '%', '%e' => '\\' . DIRECTORY_SEPARATOR, '%s' => '[^\r\n]+', '%S' => '[^\r\n]*', '%a' => '.+', '%A' => '.*', '%w' => '\s*', '%i' => '[+-]?\d+', '%d' => '\d+', '%x' => '[0-9a-fA-F]+', '%f' => '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', '%c' => '.', ] ); return '/^' . $string . '$/s'; } private function convertNewlines($text): string { return preg_replace('/\r\n/', "\n", $text); } }
[+]
..
[-] ArrayHasKey.php
[edit]
[-] ArraySubset.php
[edit]
[-] Attribute.php
[edit]
[-] Callback.php
[edit]
[-] ClassHasAttribute.php
[edit]
[-] ClassHasStaticAttribute.php
[edit]
[-] Composite.php
[edit]
[-] Constraint.php
[edit]
[-] Count.php
[edit]
[-] DirectoryExists.php
[edit]
[-] Exception.php
[edit]
[-] ExceptionCode.php
[edit]
[-] ExceptionMessage.php
[edit]
[-] ExceptionMessageRegularExpression.php
[edit]
[-] FileExists.php
[edit]
[-] GreaterThan.php
[edit]
[-] IsAnything.php
[edit]
[-] IsEmpty.php
[edit]
[-] IsEqual.php
[edit]
[-] IsFalse.php
[edit]
[-] IsFinite.php
[edit]
[-] IsIdentical.php
[edit]
[-] IsInfinite.php
[edit]
[-] IsInstanceOf.php
[edit]
[-] IsJson.php
[edit]
[-] IsNan.php
[edit]
[-] IsNull.php
[edit]
[-] IsReadable.php
[edit]
[-] IsTrue.php
[edit]
[-] IsType.php
[edit]
[-] IsWritable.php
[edit]
[-] JsonMatches.php
[edit]
[-] JsonMatchesErrorMessageProvider.php
[edit]
[-] LessThan.php
[edit]
[-] LogicalAnd.php
[edit]
[-] LogicalNot.php
[edit]
[-] LogicalOr.php
[edit]
[-] LogicalXor.php
[edit]
[-] ObjectHasAttribute.php
[edit]
[-] RegularExpression.php
[edit]
[-] SameSize.php
[edit]
[-] StringContains.php
[edit]
[-] StringEndsWith.php
[edit]
[-] StringMatchesFormatDescription.php
[edit]
[-] StringStartsWith.php
[edit]
[-] TraversableContains.php
[edit]
[-] TraversableContainsEqual.php
[edit]
[-] TraversableContainsIdentical.php
[edit]
[-] TraversableContainsOnly.php
[edit]
[-] .htaccess.disabled
[edit]