24 public function compare($filteredHeaders, $actualHeaders)
31 $actualHeaders = $actualHeaders->toArray();
34 foreach ($filteredHeaders as $k => $v) {
37 $ignore[] = str_replace(
'_',
'', $k);
38 } elseif ($k[0] ==
'!') {
40 $absent[] = str_replace(
'!',
'', $k);
46 return $this->
compareArray($expected, $actualHeaders, $ignore, $absent);
59 public function compareArray(array $expected, $actual, array $ignore = array(), array $absent = array())
61 $differences = array();
64 foreach ($absent as $header) {
65 if ($this->
hasKey($header, $actual)) {
66 $differences[
"++ {$header}"] = $actual[$header];
67 unset($actual[$header]);
72 foreach ($expected as $header => $value) {
73 if (!$this->
hasKey($header, $actual)) {
74 $differences[
"- {$header}"] = $value;
79 $ignore = array_flip($ignore);
81 $expected = array_change_key_case($expected);
84 foreach ($actual as $key => $value) {
87 if ($this->
hasKey($key, $ignore)) {
92 if (!$this->
hasKey($key, $expected)) {
93 $differences[
"+ {$key}"] = $value;
98 $lkey = strtolower($key);
99 $pos = is_string($expected[$lkey]) ? strpos($expected[$lkey],
'*') :
false;
101 foreach ((array) $actual[$key] as $v) {
102 if (($pos ===
false && $v != $expected[$lkey]) || $pos > 0 && substr($v, 0, $pos) != substr($expected[$lkey], 0, $pos)) {
103 $differences[$key] =
"{$value} != {$expected[$lkey]}";
108 return empty($differences) ? false : $differences;
122 $keys = $array->getKeys();
124 $keys = array_keys($array);
127 foreach ($keys as $k) {
128 if (!strcasecmp($k, $key)) {