/** Add a result to the result array. Results must be either "success" or "skip" or an Exception. @param $sFile The filename of the unit test case. @param $mResult The result of the unit test case. @param $fTime Execution time of the test. @throw DomainException $mResult is not a valid result. */ protected function addResult($sFile, $mResult, $fTime = 0, $iMemoryUsed = 0) { $mResult == 'success' or $mResult == 'skip' or is_object($mResult) and $mResult instanceof Exception or burn('DomainException', _WT('$mResult is not a valid result.')); $this->aResults[$sFile] = $mResult; // Shorten the filename by limiting it to ROOT_PATH when we are inside ROOT_PATH // Just improves the display, don't change it for the $aResults array $sFile = str_replace(realpath(ROOT_PATH) . '/', '', $sFile); if (!is_string($this->mLastResult) || !is_string($mResult)) { echo "--\n"; } echo $sFile . ': '; if ($mResult === 'success') { echo _WT('success') . ' [' . round($fTime, 2) . "s]\n"; $this->aMemoryResults[$sFile] = $iMemoryUsed; $this->aTimeResults[$sFile] = $fTime; } elseif ($mResult === 'skip') { echo _WT('skip') . "\n"; } elseif ($mResult instanceof UnitTestException) { $aTrace = $mResult->getTrace(); echo _WT('failure') . "\n" . sprintf(_WT("Message: %s\nLine: %s\n"), $mResult->getMessage(), array_value($aTrace[0], 'line', '?')); if ($mResult instanceof ComparisonTestException) { echo sprintf(_WT("Expected: %s\nActual: %s\n"), var_export($mResult->getExpected(), true), var_export($mResult->getActual(), true)); } } elseif ($mResult instanceof ErrorException) { echo _WT('error') . "\n" . sprintf(_WT("Class: ErrorException\nMessage: %s\nLevel: %s\nFile: %s\nLine: %s\n"), $mResult->getMessage(), weeException::getLevelName($mResult->getSeverity()), $mResult->getFile(), $mResult->getLine()); } else { echo _WT('error') . "\n" . sprintf(_WT("Class: %s\nMessage: %s\nFile: %s\nLine: %s\nTrace:\n%s\n"), get_class($mResult), $mResult->getMessage(), $mResult->getFile(), $mResult->getLine(), $mResult->getTraceAsString()); } $this->mLastResult = $mResult; }