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.
73 lines
1.6 KiB
73 lines
1.6 KiB
<?php |
|
namespace Hamcrest; |
|
|
|
class Thingy |
|
{ |
|
private $_result; |
|
public function __construct($result) |
|
{ |
|
$this->_result = $result; |
|
} |
|
public function getResult() |
|
{ |
|
return $this->_result; |
|
} |
|
} |
|
|
|
/* Test-specific subclass only */ |
|
class ResultMatcher extends \Hamcrest\FeatureMatcher |
|
{ |
|
public function __construct() |
|
{ |
|
parent::__construct(self::TYPE_ANY, null, equalTo('bar'), 'Thingy with result', 'result'); |
|
} |
|
public function featureValueOf($actual) |
|
{ |
|
if ($actual instanceof \Hamcrest\Thingy) { |
|
return $actual->getResult(); |
|
} |
|
} |
|
} |
|
|
|
class FeatureMatcherTest extends \Hamcrest\AbstractMatcherTest |
|
{ |
|
|
|
private $_resultMatcher; |
|
|
|
protected function setUp() |
|
{ |
|
$this->_resultMatcher = $this->_resultMatcher(); |
|
} |
|
|
|
protected function createMatcher() |
|
{ |
|
return $this->_resultMatcher(); |
|
} |
|
|
|
public function testMatchesPartOfAnObject() |
|
{ |
|
$this->assertMatches($this->_resultMatcher, new \Hamcrest\Thingy('bar'), 'feature'); |
|
$this->assertDescription('Thingy with result "bar"', $this->_resultMatcher); |
|
} |
|
|
|
public function testMismatchesPartOfAnObject() |
|
{ |
|
$this->assertMismatchDescription( |
|
'result was "foo"', |
|
$this->_resultMatcher, |
|
new \Hamcrest\Thingy('foo') |
|
); |
|
} |
|
|
|
public function testDoesNotGenerateNoticesForNull() |
|
{ |
|
$this->assertMismatchDescription('result was null', $this->_resultMatcher, null); |
|
} |
|
|
|
// -- Creation Methods |
|
|
|
private function _resultMatcher() |
|
{ |
|
return new \Hamcrest\ResultMatcher(); |
|
} |
|
}
|
|
|