public function getMatchers()
{
return ['haveKeyWithDateTime' => function ($subject, $key) {
return isset($subject[$key]) && $subject[$key] instanceof \DateTime;
}, 'haveKeyWithInt' => function ($subject, $key) {
return isset($subject[$key]) && is_int($subject[$key]);
}, 'haveKeys' => function ($subject, $keys) {
return count(array_intersect_key(array_flip($keys), $subject)) === count($keys);
}, 'haveKeyWithValue' => function ($subject, $key, $value) {
return isset($subject[$key]) && $subject[$key] === $value;
}, 'haveFirstValue' => function ($subject, $key, $value) {
$subject = reset($subject);
$subject = is_array($subject) ? $subject[$key] : $subject->get($key);
return $subject === $value;
}];
}