vendor and env first commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
<?php
|
||||
namespace Hamcrest;
|
||||
|
||||
/*
|
||||
Copyright (c) 2009 hamcrest.org
|
||||
*/
|
||||
|
||||
/**
|
||||
* Supporting class for matching a feature of an object. Implement
|
||||
* <code>featureValueOf()</code> in a subclass to pull out the feature to be
|
||||
* matched against.
|
||||
*/
|
||||
abstract class FeatureMatcher extends TypeSafeDiagnosingMatcher
|
||||
{
|
||||
|
||||
private $_subMatcher;
|
||||
private $_featureDescription;
|
||||
private $_featureName;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $subtype
|
||||
* @param \Hamcrest\Matcher $subMatcher The matcher to apply to the feature
|
||||
* @param string $featureDescription Descriptive text to use in describeTo
|
||||
* @param string $featureName Identifying text for mismatch message
|
||||
*/
|
||||
public function __construct($type, $subtype, Matcher $subMatcher, $featureDescription, $featureName)
|
||||
{
|
||||
parent::__construct($type, $subtype);
|
||||
|
||||
$this->_subMatcher = $subMatcher;
|
||||
$this->_featureDescription = $featureDescription;
|
||||
$this->_featureName = $featureName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implement this to extract the interesting feature.
|
||||
*
|
||||
* @param mixed $actual the target object
|
||||
*
|
||||
* @return mixed the feature to be matched
|
||||
*/
|
||||
abstract protected function featureValueOf($actual);
|
||||
|
||||
public function matchesSafelyWithDiagnosticDescription($actual, Description $mismatchDescription)
|
||||
{
|
||||
$featureValue = $this->featureValueOf($actual);
|
||||
|
||||
if (!$this->_subMatcher->matches($featureValue)) {
|
||||
$mismatchDescription->appendText($this->_featureName)
|
||||
->appendText(' was ')->appendValue($featureValue);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
final public function describeTo(Description $description)
|
||||
{
|
||||
$description->appendText($this->_featureDescription)->appendText(' ')
|
||||
->appendDescriptionOf($this->_subMatcher)
|
||||
;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user