You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
89 lines
2.4 KiB
<?php |
|
namespace Hamcrest\Arrays; |
|
|
|
use Hamcrest\AbstractMatcherTest; |
|
|
|
class IsArrayTest extends AbstractMatcherTest |
|
{ |
|
|
|
protected function createMatcher() |
|
{ |
|
return IsArray::anArray(array(equalTo('irrelevant'))); |
|
} |
|
|
|
public function testMatchesAnArrayThatMatchesAllTheElementMatchers() |
|
{ |
|
$this->assertMatches( |
|
anArray(array(equalTo('a'), equalTo('b'), equalTo('c'))), |
|
array('a', 'b', 'c'), |
|
'should match array with matching elements' |
|
); |
|
} |
|
|
|
public function testDoesNotMatchAnArrayWhenElementsDoNotMatch() |
|
{ |
|
$this->assertDoesNotMatch( |
|
anArray(array(equalTo('a'), equalTo('b'))), |
|
array('b', 'c'), |
|
'should not match array with different elements' |
|
); |
|
} |
|
|
|
public function testDoesNotMatchAnArrayOfDifferentSize() |
|
{ |
|
$this->assertDoesNotMatch( |
|
anArray(array(equalTo('a'), equalTo('b'))), |
|
array('a', 'b', 'c'), |
|
'should not match larger array' |
|
); |
|
$this->assertDoesNotMatch( |
|
anArray(array(equalTo('a'), equalTo('b'))), |
|
array('a'), |
|
'should not match smaller array' |
|
); |
|
} |
|
|
|
public function testDoesNotMatchNull() |
|
{ |
|
$this->assertDoesNotMatch( |
|
anArray(array(equalTo('a'))), |
|
null, |
|
'should not match null' |
|
); |
|
} |
|
|
|
public function testHasAReadableDescription() |
|
{ |
|
$this->assertDescription( |
|
'["a", "b"]', |
|
anArray(array(equalTo('a'), equalTo('b'))) |
|
); |
|
} |
|
|
|
public function testHasAReadableMismatchDescriptionWhenKeysDontMatch() |
|
{ |
|
$this->assertMismatchDescription( |
|
'array keys were [<1>, <2>]', |
|
anArray(array(equalTo('a'), equalTo('b'))), |
|
array(1 => 'a', 2 => 'b') |
|
); |
|
} |
|
|
|
public function testSupportsMatchesAssociativeArrays() |
|
{ |
|
$this->assertMatches( |
|
anArray(array('x'=>equalTo('a'), 'y'=>equalTo('b'), 'z'=>equalTo('c'))), |
|
array('x'=>'a', 'y'=>'b', 'z'=>'c'), |
|
'should match associative array with matching elements' |
|
); |
|
} |
|
|
|
public function testDoesNotMatchAnAssociativeArrayWhenKeysDoNotMatch() |
|
{ |
|
$this->assertDoesNotMatch( |
|
anArray(array('x'=>equalTo('a'), 'y'=>equalTo('b'))), |
|
array('x'=>'b', 'z'=>'c'), |
|
'should not match array with different keys' |
|
); |
|
} |
|
}
|
|
|