_elementMatcher = $elementMatcher; } protected function matchesSafely($items) { foreach ($items as $item) { if ($this->_elementMatcher->matches($item)) { return true; } } return false; } protected function describeMismatchSafely($items, Hamcrest_Description $mismatchDescription) { $mismatchDescription->appendText('was ')->appendValue($items); } public function describeTo(Hamcrest_Description $description) { $description ->appendText('a collection containing ') ->appendDescriptionOf($this->_elementMatcher) ; } /** * Test if the value is an array containing this matcher. * * Example: *
* assertThat(array('a', 'b'), hasItem(equalTo('b')));
* //Convenience defaults to equalTo()
* assertThat(array('a', 'b'), hasItem('b'));
*
*
* @factory ...
*/
public static function hasItem()
{
$args = func_get_args();
$firstArg = array_shift($args);
return new self(Hamcrest_Util::wrapValueWithIsEqual($firstArg));
}
/**
* Test if the value is an array containing elements that match all of these
* matchers.
*
* Example:
*
* assertThat(array('a', 'b', 'c'), hasItems(equalTo('a'), equalTo('b')));
*
*
* @factory ...
*/
public static function hasItems(/* args... */)
{
$args = func_get_args();
$matchers = array();
foreach ($args as $arg)
{
$matchers[] = self::hasItem($arg);
}
return Hamcrest_Core_AllOf::allOf($matchers);
}
}