Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. ObjectComparator.php

function ObjectComparator::assertEquals

Throws

ComparisonFailure

Overrides ArrayComparator::assertEquals

2 calls to ObjectComparator::assertEquals()
ProphecyComparator::assertEquals in vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php
@phpstan-param list<array{object, object}> $processed
ProphecyComparator::assertEquals in vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php
@phpstan-param list<array{object, object}> $processed
3 methods override ObjectComparator::assertEquals()
DateTimeComparator::assertEquals in vendor/sebastian/comparator/src/DateTimeComparator.php
DOMNodeComparator::assertEquals in vendor/sebastian/comparator/src/DOMNodeComparator.php
ProphecyComparator::assertEquals in vendor/phpspec/prophecy/src/Prophecy/Comparator/ProphecyComparator.php
@phpstan-param list<array{object, object}> $processed

File

vendor/sebastian/comparator/src/ObjectComparator.php, line 29

Class

ObjectComparator

Namespace

SebastianBergmann\Comparator

Code

public function assertEquals(mixed $expected, mixed $actual, float $delta = 0.0, bool $canonicalize = false, bool $ignoreCase = false, array &$processed = []) : void {
    assert(is_object($expected));
    assert(is_object($actual));
    if ($actual::class !== $expected::class) {
        $exporter = new Exporter();
        throw new ComparisonFailure($expected, $actual, $exporter->export($expected), $exporter->export($actual), sprintf('%s is not instance of expected class "%s".', $exporter->export($actual), $expected::class));
    }
    // don't compare twice to allow for cyclic dependencies
    if (in_array([
        $actual,
        $expected,
    ], $processed, true) || in_array([
        $expected,
        $actual,
    ], $processed, true)) {
        return;
    }
    $processed[] = [
        $actual,
        $expected,
    ];
    // don't compare objects if they are identical
    // this helps to avoid the error "maximum function nesting level reached"
    // CAUTION: this conditional clause is not tested
    if ($actual !== $expected) {
        try {
            parent::assertEquals($this->toArray($expected), $this->toArray($actual), $delta, $canonicalize, $ignoreCase, $processed);
        } catch (ComparisonFailure $e) {
            throw new ComparisonFailure($expected, $actual, substr_replace($e->getExpectedAsString(), $expected::class . ' Object', 0, 5), substr_replace($e->getActualAsString(), $actual::class . ' Object', 0, 5), 'Failed asserting that two objects are equal.');
        }
    }
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal