pass('Expected results received'); return; } $iLen = count($aExpected); for ($c = 0; $c < $iLen; $c++) { if ($aReceived[$c] != $aExpected[$c]) { $this->fail(sprintf("Failure. Expected %s, but got %s\n", $aExpected[$c], $aReceived[$c])); } } } function assertEntity($oEntity, $sClass) { if (is_a($oEntity, $sClass)) { return $this->pass(sprintf('Object is a %s', $sClass)); } return $this->fail(sprintf('Object is not a %s', $sClass)); } function assertNotError($oObject) { if(PEAR::isError($oObject)) { return $this->fail(sprintf('Object is a PEAR Error: '.$oObject->getMessage() )); } return $this->pass(sprintf('Object is not a PEAR Error')); } function assertError($oObject) { if(PEAR::isError($oObject)) { return $this->pass(sprintf('Object is a PEAR Error: '.$oObject->getMessage() )); } return $this->fail(sprintf('Object is not a PEAR Error')); } function assertGroup($oGroup) { return $this->assertEntity($oGroup, 'Group'); } } /** * Extends the HTML reporter to display more information * */ class KTHtmlReporter extends HtmlReporter { /** * Display all test output * * @var bool */ protected $show; /** * Does nothing yet. The first output will * be sent on the first test start. For use * by a web browser. * @access public */ function KTHtmlReporter($show = false) { $this->HtmlReporter(); $this->show = $show; } /** * Display the passed tests * * @param string $message Display a custom message for the test */ function paintPass($message) { parent::paintPass($message); if($this->show){ print "PASS: "; $breadcrumb = $this->getTestList(); array_shift($breadcrumb); print implode("->", $breadcrumb); print "->$message
\n"; } } /** * Paints the test failure with a breadcrumbs * trail of the nesting test suites below the * top level test. * @param string $message Failure message displayed in * the context of the other tests. * @access public */ function paintFail($message) { SimpleScorer::paintFail($message); print "FAIL: "; $breadcrumb = $this->getTestList(); array_shift($breadcrumb); print implode(" -> ", $breadcrumb); print " -> " . $this->_htmlEntities($message) . "
\n"; } /** * Paints a PHP error. * @param string $message Message is ignored. * @access public */ function paintError($message) { SimpleScorer::paintError($message); print "EXCEPTION: "; $breadcrumb = $this->getTestList(); array_shift($breadcrumb); print implode(" -> ", $breadcrumb); print " -> " . $this->_htmlEntities($message) . "
\n"; } /** * Display the start of each method * * @param string $test_name */ function paintMethodStart($test_name) { parent::paintMethodStart($test_name); if($this->show) print "
"; print "Method: $test_name
"; } /** * Display the start of each test case * * @param string $test_case * @param int $size */ function paintGroupStart($test_case, $size) { parent::paintGroupStart($test_case, $size); print "
Test Case: $test_case
"; } /** * Paints the CSS. Add additional styles here. * @return string CSS code as text. * @access protected */ function _getCss() { return ".fail { background-color: inherit; color: red; }" . ".pass { background-color: inherit; color: green; }" . " pre { background-color: lightgray; color: inherit; }" . ".group { background-color: lightblue; padding: 4px; }" . ".method { background-color: inherit; }"; } } /** * Extends the text (CLI) reporter to display more information * */ class KTTextReporter extends TextReporter { /** * Display the start of each test case * * @param string $test_case * @param int $size */ function paintGroupStart($test_case, $size) { parent::paintGroupStart($test_case, $size); print "\nTest Case: $test_case\n"; } /** * Display the start of each method * * @param string $test_name */ function paintMethodStart($test_name) { parent::paintMethodStart($test_name); print "Method: $test_name\n"; } }