Version 1
[yaffs-website] / vendor / sebastian / comparator / src / SplObjectStorageComparator.php
1 <?php
2 /*
3  * This file is part of the Comparator package.
4  *
5  * (c) Sebastian Bergmann <sebastian@phpunit.de>
6  *
7  * For the full copyright and license information, please view the LICENSE
8  * file that was distributed with this source code.
9  */
10
11 namespace SebastianBergmann\Comparator;
12
13 /**
14  * Compares \SplObjectStorage instances for equality.
15  */
16 class SplObjectStorageComparator extends Comparator
17 {
18     /**
19      * Returns whether the comparator can compare two values.
20      *
21      * @param  mixed $expected The first value to compare
22      * @param  mixed $actual   The second value to compare
23      * @return bool
24      */
25     public function accepts($expected, $actual)
26     {
27         return $expected instanceof \SplObjectStorage && $actual instanceof \SplObjectStorage;
28     }
29
30     /**
31      * Asserts that two values are equal.
32      *
33      * @param mixed $expected     First value to compare
34      * @param mixed $actual       Second value to compare
35      * @param float $delta        Allowed numerical distance between two values to consider them equal
36      * @param bool  $canonicalize Arrays are sorted before comparison when set to true
37      * @param bool  $ignoreCase   Case is ignored when set to true
38      *
39      * @throws ComparisonFailure
40      */
41     public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false)
42     {
43         foreach ($actual as $object) {
44             if (!$expected->contains($object)) {
45                 throw new ComparisonFailure(
46                     $expected,
47                     $actual,
48                     $this->exporter->export($expected),
49                     $this->exporter->export($actual),
50                     false,
51                     'Failed asserting that two objects are equal.'
52                 );
53             }
54         }
55
56         foreach ($expected as $object) {
57             if (!$actual->contains($object)) {
58                 throw new ComparisonFailure(
59                     $expected,
60                     $actual,
61                     $this->exporter->export($expected),
62                     $this->exporter->export($actual),
63                     false,
64                     'Failed asserting that two objects are equal.'
65                 );
66             }
67         }
68     }
69 }