category = $category;
}
/**
*
* @param bool $reset
*
* @return int // test result level
*/
public function test($reset = false)
{
if ($reset || is_null($this->testResult)) {
try {
Log::resetTime(Log::LV_DEBUG);
Log::info('START TEST "' . $this->getTitle() . '" [CLASS: ' . get_called_class() . ']');
$this->testResult = $this->runTest();
} catch (Exception $e) {
Log::logException($e, Log::LV_DEFAULT, ' TEST "' . $this->getTitle() . '" EXCEPTION:');
$this->testResult = self::LV_FAIL;
} catch (Error $e) {
Log::logException($e, Log::LV_DEFAULT, ' TEST "' . $this->getTitle() . '" EXCEPTION:');
$this->testResult = self::LV_FAIL;
}
Log::logTime('TEST "' . $this->getTitle() . '" RESULT: ' . $this->resultString() . "\n", Log::LV_DEFAULT, false);
}
return $this->testResult;
}
abstract protected function runTest();
public function display()
{
if ($this->testResult === self::LV_SKIP) {
return false;
} else {
return true;
}
}
public function getCategory()
{
return $this->category;
}
public function getTitle()
{
return 'Test class ' . get_called_class();
}
public function getContent()
{
try {
switch ($this->test(false)) {
case self::LV_SKIP:
return $this->skipContent();
case self::LV_GOOD:
return $this->goodContent();
case self::LV_PASS:
return $this->passContent();
case self::LV_SOFT_WARNING:
return $this->swarnContent();
case self::LV_HARD_WARNING:
return $this->hwarnContent();
case self::LV_FAIL:
default:
return $this->failContent();
}
} catch (Exception $e) {
Log::logException($e, Log::LV_DEFAULT, 'VALIDATION DISPLAY CONTENT ' . get_called_class() . ' RESULT: ' . $this->resultString() . ' EXCEPTION:');
return 'DISPLAY CONTENT PROBLEM
'
. 'MESSAGE: ' . $e->getMessage() . '
'
. 'TRACE:'
. '
' . $e->getTraceAsString() . ''; } catch (Error $e) { Log::logException($e, Log::LV_DEFAULT, 'VALIDATION DISPLAY CONTENT ' . get_called_class() . ' ERROR:'); return 'DISPLAY CONTENT PROBLEM
' . $e->getTraceAsString() . ''; } } public function getBadgeClass() { return self::resultLevelToBadgeClass($this->test(false)); } public function getUniqueSelector() { return strtolower(str_replace("_", "-", get_called_class())); } public function resultString() { return self::resultLevelToString($this->test(false)); } public static function resultLevelToString($level) { switch ($level) { case self::LV_SKIP: return 'skip'; case self::LV_GOOD: return 'good'; case self::LV_PASS: return 'passed'; case self::LV_SOFT_WARNING: return 'soft warning'; case self::LV_HARD_WARNING: return 'hard warning'; case self::LV_FAIL: default: return 'failed'; } } public static function resultLevelToBadgeClass($level) { switch ($level) { case self::LV_SKIP: return ''; case self::LV_GOOD: return 'good'; case self::LV_PASS: return 'pass'; case self::LV_SOFT_WARNING: return 'warn'; case self::LV_HARD_WARNING: return 'hwarn'; case self::LV_FAIL: default: return 'fail'; } } /** * Return content for test status: fail warning * * @return string */ protected function failContent() { return 'test result: fail'; } /** * Return content for test status: hard warning * * @return string */ protected function hwarnContent() { return 'test result: hard warning'; } /** * Return content for test status: soft warning * * @return string */ protected function swarnContent() { return 'test result: soft warning'; } /** * Return content for test status: good * * @return string */ protected function goodContent() { return 'test result: good'; } /** * Return content for test status: pass * * @return string */ protected function passContent() { return 'test result: pass'; } /** * Return content for test status: skip * * @return string */ protected function skipContent() { return 'test result: skipped'; } }