private function specifyExecute($test, $throws = false, $examples = array())
{
$message = false;
if (is_array($throws)) {
$message = $throws[1] ? strtolower($throws[1]) : false;
$throws = $throws[0];
}
$result = $this->getTestResultObject();
try {
call_user_func_array($test, $examples);
$this->specifyCheckMockObjects();
} catch (\PHPUnit_Framework_AssertionFailedError $e) {
if ($throws !== get_class($e)) {
$result->addFailure(clone $this, $e, $result->time());
}
if ($message !== false && $message !== strtolower($e->getMessage())) {
$f = new \PHPUnit_Framework_AssertionFailedError("exception message '{$message}' was expected, but '" . $e->getMessage() . "' was received");
$result->addFailure(clone $this, $f, $result->time());
}
} catch (\Exception $e) {
if ($throws) {
if ($throws !== get_class($e)) {
$f = new \PHPUnit_Framework_AssertionFailedError("exception '{$throws}' was expected, but " . get_class($e) . ' was thrown');
$result->addFailure(clone $this, $f, $result->time());
}
if ($message !== false && $message !== strtolower($e->getMessage())) {
$f = new \PHPUnit_Framework_AssertionFailedError("exception message '{$message}' was expected, but '" . $e->getMessage() . "' was received");
$result->addFailure(clone $this, $f, $result->time());
}
} else {
throw $e;
}
}
if ($throws) {
if (isset($e)) {
$this->assertTrue(true, 'exception handled');
} else {
$f = new \PHPUnit_Framework_AssertionFailedError("exception '{$throws}' was not thrown as expected");
$result->addFailure(clone $this, $f, $result->time());
}
}
}