PluginProbe ʕ •ᴥ•ʔ
Kubio AI Page Builder / trunk
Kubio AI Page Builder vtrunk
2.9.0 2.8.6 2.8.5 2.8.4 2.8.3 2.8.2 2.8.1 trunk 1.0.0 1.0.1 1.1.0 1.2.0 1.2.1 1.2.2 1.2.3 1.3.0 1.3.1 1.3.2 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.7.3 1.8.0 1.8.1 1.8.2 1.9.0 2.0.0 2.1.1 2.1.2 2.1.3 2.2.0 2.2.3 2.2.4 2.2.5 2.3.0 2.3.1 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.5 2.5.0 2.5.1 2.5.2 2.5.3 2.6.0 2.6.1 2.6.2 2.6.3 2.6.5 2.6.6 2.6.7 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0
kubio / vendor / sebastian / comparator / src / ArrayComparator.php
kubio / vendor / sebastian / comparator / src Last commit date
exceptions 1 year ago ArrayComparator.php 1 year ago Comparator.php 1 year ago ComparisonFailure.php 1 year ago DOMNodeComparator.php 1 year ago DateTimeComparator.php 1 year ago DoubleComparator.php 1 year ago ExceptionComparator.php 1 year ago Factory.php 1 year ago MockObjectComparator.php 1 year ago NumericComparator.php 1 year ago ObjectComparator.php 1 year ago ResourceComparator.php 1 year ago ScalarComparator.php 1 year ago SplObjectStorageComparator.php 1 year ago TypeComparator.php 1 year ago
ArrayComparator.php
142 lines
1 <?php declare(strict_types=1);
2 /*
3 * This file is part of sebastian/comparator.
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 namespace SebastianBergmann\Comparator;
11
12 use function array_key_exists;
13 use function is_array;
14 use function sort;
15 use function sprintf;
16 use function str_replace;
17 use function trim;
18
19 /**
20 * Compares arrays for equality.
21 *
22 * Arrays are equal if they contain the same key-value pairs.
23 * The order of the keys does not matter.
24 * The types of key-value pairs do not matter.
25 */
26 class ArrayComparator extends Comparator
27 {
28 /**
29 * Returns whether the comparator can compare two values.
30 *
31 * @param mixed $expected The first value to compare
32 * @param mixed $actual The second value to compare
33 *
34 * @return bool
35 */
36 public function accepts($expected, $actual)
37 {
38 return is_array($expected) && is_array($actual);
39 }
40
41 /**
42 * Asserts that two arrays are equal.
43 *
44 * @param mixed $expected First value to compare
45 * @param mixed $actual Second value to compare
46 * @param float $delta Allowed numerical distance between two values to consider them equal
47 * @param bool $canonicalize Arrays are sorted before comparison when set to true
48 * @param bool $ignoreCase Case is ignored when set to true
49 * @param array $processed List of already processed elements (used to prevent infinite recursion)
50 *
51 * @throws ComparisonFailure
52 */
53 public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false, array &$processed = [])/*: void*/
54 {
55 if ($canonicalize) {
56 sort($expected);
57 sort($actual);
58 }
59
60 $remaining = $actual;
61 $actualAsString = "Array (\n";
62 $expectedAsString = "Array (\n";
63 $equal = true;
64
65 foreach ($expected as $key => $value) {
66 unset($remaining[$key]);
67
68 if (!array_key_exists($key, $actual)) {
69 $expectedAsString .= sprintf(
70 " %s => %s\n",
71 $this->exporter->export($key),
72 $this->exporter->shortenedExport($value)
73 );
74
75 $equal = false;
76
77 continue;
78 }
79
80 try {
81 $comparator = $this->factory->getComparatorFor($value, $actual[$key]);
82 $comparator->assertEquals($value, $actual[$key], $delta, $canonicalize, $ignoreCase, $processed);
83
84 $expectedAsString .= sprintf(
85 " %s => %s\n",
86 $this->exporter->export($key),
87 $this->exporter->shortenedExport($value)
88 );
89
90 $actualAsString .= sprintf(
91 " %s => %s\n",
92 $this->exporter->export($key),
93 $this->exporter->shortenedExport($actual[$key])
94 );
95 } catch (ComparisonFailure $e) {
96 $expectedAsString .= sprintf(
97 " %s => %s\n",
98 $this->exporter->export($key),
99 $e->getExpectedAsString() ? $this->indent($e->getExpectedAsString()) : $this->exporter->shortenedExport($e->getExpected())
100 );
101
102 $actualAsString .= sprintf(
103 " %s => %s\n",
104 $this->exporter->export($key),
105 $e->getActualAsString() ? $this->indent($e->getActualAsString()) : $this->exporter->shortenedExport($e->getActual())
106 );
107
108 $equal = false;
109 }
110 }
111
112 foreach ($remaining as $key => $value) {
113 $actualAsString .= sprintf(
114 " %s => %s\n",
115 $this->exporter->export($key),
116 $this->exporter->shortenedExport($value)
117 );
118
119 $equal = false;
120 }
121
122 $expectedAsString .= ')';
123 $actualAsString .= ')';
124
125 if (!$equal) {
126 throw new ComparisonFailure(
127 $expected,
128 $actual,
129 $expectedAsString,
130 $actualAsString,
131 false,
132 'Failed asserting that two arrays are equal.'
133 );
134 }
135 }
136
137 protected function indent($lines)
138 {
139 return trim(str_replace("\n", "\n ", $lines));
140 }
141 }
142