| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- declare(strict_types=1);
- /**
- * This file is part of Hyperf.
- *
- * @link https://www.hyperf.io
- * @document https://hyperf.wiki
- * @contact group@hyperf.io
- * @license https://github.com/hyperf/hyperf/blob/master/LICENSE
- */
- namespace Hyperf\Testing\Constraint;
- use PHPUnit\Framework\Constraint\Constraint;
- use ReflectionClass;
- class SeeInOrder extends Constraint
- {
- /**
- * The string under validation.
- *
- * @var string
- */
- protected $content;
- /**
- * The last value that failed to pass validation.
- *
- * @var string
- */
- protected $failedValue;
- /**
- * Create a new constraint instance.
- *
- * @param string $content
- */
- public function __construct($content)
- {
- $this->content = $content;
- }
- /**
- * Determine if the rule passes validation.
- *
- * @param array $values
- */
- public function matches($values): bool
- {
- $position = 0;
- foreach ($values as $value) {
- if (empty($value)) {
- continue;
- }
- $valuePosition = mb_strpos($this->content, $value, $position);
- if ($valuePosition === false || $valuePosition < $position) {
- $this->failedValue = $value;
- return false;
- }
- $position = $valuePosition + mb_strlen($value);
- }
- return true;
- }
- /**
- * Get the description of the failure.
- *
- * @param array $values
- */
- public function failureDescription($values): string
- {
- return sprintf(
- 'Failed asserting that \'%s\' contains "%s" in specified order.',
- $this->content,
- $this->failedValue
- );
- }
- /**
- * Get a string representation of the object.
- */
- public function toString(): string
- {
- return (new ReflectionClass($this))->name;
- }
- }
|