Description
General assert method used by others for common output.
Parameters
- boolean $expression
- string $message The message to output. If the message is not a string, then it will be converted to '{:message}'. Use '{:message}' in the string and it will use the `$data` to format the message with `String::insert()`.
- array $data
Returns
void
public function assert($expression, $message = false, $data = array()) {
if (!is_string($message)) {
$message = '{:message}';
}
if (strpos($message, "{:message}") !== false) {
$params = $data;
$params['message'] = $this->_message($params);
$message = String::insert($message, $params);
}
$trace = Debugger::trace(array('start' => 1, 'format' => 'array'));
$methods = $this->methods();
$i = 1;
while ($i < count($trace)) {
if (in_array($trace[$i]['function'], $methods) && $trace[$i - 1]['object'] == $this) {
break;
}
$i++;
}
$result = array(
'file' => $trace[$i - 1]['file'],
'line' => $trace[$i - 1]['line'],
'method' => $trace[$i]['function'],
'assertion' => $trace[$i - 1]['function'],
'class' => get_class($trace[$i - 1]['object']),
'message' => $message,
'data' => $data,
);
$this->_result(($expression ? 'pass' : 'fail'), $result);
return $expression;
}