1212namespace Prophecy \Comparator ;
1313
1414use Prophecy \Prophecy \ProphecyInterface ;
15+ use SebastianBergmann \Comparator \Comparator ;
16+ use SebastianBergmann \Comparator \Factory ;
1517use SebastianBergmann \Comparator \ObjectComparator ;
1618
1719/**
1820 * @final
1921 */
20- class ProphecyComparator extends ObjectComparator
22+ class ProphecyComparator extends Comparator
2123{
2224 /**
2325 * @param mixed $expected
2426 * @param mixed $actual
2527 */
2628 public function accepts ($ expected , $ actual ): bool
2729 {
28- return is_object ($ expected) && is_object ( $ actual ) && $ actual instanceof ProphecyInterface;
30+ return \ is_object ($ expected ) && $ actual instanceof ProphecyInterface;
2931 }
3032
3133 /**
@@ -34,11 +36,23 @@ public function accepts($expected, $actual): bool
3436 * @param float $delta
3537 * @param bool $canonicalize
3638 * @param bool $ignoreCase
37- * @param mixed[] $processed
3839 */
39- public function assertEquals ($ expected , $ actual , $ delta = 0.0 , $ canonicalize = false , $ ignoreCase = false , array & $ processed = array () ): void
40+ public function assertEquals ($ expected , $ actual , $ delta = 0.0 , $ canonicalize = false , $ ignoreCase = false ): void
4041 {
4142 \assert ($ actual instanceof ProphecyInterface);
42- parent ::assertEquals ($ expected , $ actual ->reveal (), $ delta , $ canonicalize , $ ignoreCase , $ processed );
43+ $ this ->getComparatorFactory ()->getComparatorFor ($ expected , $ actual ->reveal ())->assertEquals ($ expected , $ actual ->reveal (), $ delta , $ canonicalize , $ ignoreCase );
44+ }
45+
46+ private function getComparatorFactory (): Factory
47+ {
48+ // sebastianbergmann/comparator 5+
49+ // @phpstan-ignore function.alreadyNarrowedType
50+ if (\method_exists ($ this , 'factory ' )) {
51+ return $ this ->factory ();
52+ }
53+
54+ // sebastianbergmann/comparator <5
55+ // @phpstan-ignore property.private
56+ return $ this ->factory ;
4357 }
4458}
0 commit comments