ClosureComparator.php
Namespace
Prophecy\ComparatorFile
-
vendor/
phpspec/ prophecy/ src/ Prophecy/ Comparator/ ClosureComparator.php
View source
<?php
/*
* This file is part of the Prophecy.
* (c) Konstantin Kudryashov <ever.zet@gmail.com>
* Marcello Duarte <marcello.duarte@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Prophecy\Comparator;
use SebastianBergmann\Comparator\Comparator;
use SebastianBergmann\Comparator\ComparisonFailure;
/**
* Closure comparator.
*
* @author Konstantin Kudryashov <ever.zet@gmail.com>
*/
final class ClosureComparator extends Comparator {
/**
* @param mixed $expected
* @param mixed $actual
*/
public function accepts($expected, $actual) : bool {
return is_object($expected) && $expected instanceof \Closure && is_object($actual) && $actual instanceof \Closure;
}
/**
* @param mixed $expected
* @param mixed $actual
* @param float $delta
* @param bool $canonicalize
* @param bool $ignoreCase
*/
public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false) : void {
if ($expected !== $actual) {
// Support for sebastian/comparator < 5
if ((new \ReflectionMethod(ComparisonFailure::class, '__construct'))->getNumberOfParameters() >= 6) {
// @phpstan-ignore-next-line
throw new ComparisonFailure($expected, $actual, '', '', false, 'all closures are different if not identical');
}
throw new ComparisonFailure($expected, $actual, '', '', 'all closures are different if not identical');
}
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
ClosureComparator | Closure comparator. |