You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
863 lines
24 KiB
863 lines
24 KiB
<?php
|
|
/**
|
|
* base include file for SimpleTest
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
* @version $Id: scorer.php 1723 2008-04-08 00:34:10Z lastcraft $
|
|
*/
|
|
|
|
/**#@+*/
|
|
require_once(dirname(__FILE__) . '/invoker.php');
|
|
/**#@-*/
|
|
|
|
/**
|
|
* Can receive test events and display them. Display
|
|
* is achieved by making display methods available
|
|
* and visiting the incoming event.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
* @abstract
|
|
*/
|
|
class SimpleScorer {
|
|
var $_passes;
|
|
var $_fails;
|
|
var $_exceptions;
|
|
var $_is_dry_run;
|
|
|
|
/**
|
|
* Starts the test run with no results.
|
|
* @access public
|
|
*/
|
|
function SimpleScorer() {
|
|
$this->_passes = 0;
|
|
$this->_fails = 0;
|
|
$this->_exceptions = 0;
|
|
$this->_is_dry_run = false;
|
|
}
|
|
|
|
/**
|
|
* Signals that the next evaluation will be a dry
|
|
* run. That is, the structure events will be
|
|
* recorded, but no tests will be run.
|
|
* @param boolean $is_dry Dry run if true.
|
|
* @access public
|
|
*/
|
|
function makeDry($is_dry = true) {
|
|
$this->_is_dry_run = $is_dry;
|
|
}
|
|
|
|
/**
|
|
* The reporter has a veto on what should be run.
|
|
* @param string $test_case_name name of test case.
|
|
* @param string $method Name of test method.
|
|
* @access public
|
|
*/
|
|
function shouldInvoke($test_case_name, $method) {
|
|
return ! $this->_is_dry_run;
|
|
}
|
|
|
|
/**
|
|
* Can wrap the invoker in preperation for running
|
|
* a test.
|
|
* @param SimpleInvoker $invoker Individual test runner.
|
|
* @return SimpleInvoker Wrapped test runner.
|
|
* @access public
|
|
*/
|
|
function &createInvoker(&$invoker) {
|
|
return $invoker;
|
|
}
|
|
|
|
/**
|
|
* Accessor for current status. Will be false
|
|
* if there have been any failures or exceptions.
|
|
* Used for command line tools.
|
|
* @return boolean True if no failures.
|
|
* @access public
|
|
*/
|
|
function getStatus() {
|
|
if ($this->_exceptions + $this->_fails > 0) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Increments the pass count.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintPass($message) {
|
|
$this->_passes++;
|
|
}
|
|
|
|
/**
|
|
* Increments the fail count.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintFail($message) {
|
|
$this->_fails++;
|
|
}
|
|
|
|
/**
|
|
* Deals with PHP 4 throwing an error.
|
|
* @param string $message Text of error formatted by
|
|
* the test case.
|
|
* @access public
|
|
*/
|
|
function paintError($message) {
|
|
$this->_exceptions++;
|
|
}
|
|
|
|
/**
|
|
* Deals with PHP 5 throwing an exception.
|
|
* @param Exception $exception The actual exception thrown.
|
|
* @access public
|
|
*/
|
|
function paintException($exception) {
|
|
$this->_exceptions++;
|
|
}
|
|
|
|
/**
|
|
* Prints the message for skipping tests.
|
|
* @param string $message Text of skip condition.
|
|
* @access public
|
|
*/
|
|
function paintSkip($message) {
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of passes so far.
|
|
* @return integer Number of passes.
|
|
* @access public
|
|
*/
|
|
function getPassCount() {
|
|
return $this->_passes;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of fails so far.
|
|
* @return integer Number of fails.
|
|
* @access public
|
|
*/
|
|
function getFailCount() {
|
|
return $this->_fails;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of untrapped errors
|
|
* so far.
|
|
* @return integer Number of exceptions.
|
|
* @access public
|
|
*/
|
|
function getExceptionCount() {
|
|
return $this->_exceptions;
|
|
}
|
|
|
|
/**
|
|
* Paints a simple supplementary message.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintMessage($message) {
|
|
}
|
|
|
|
/**
|
|
* Paints a formatted ASCII message such as a
|
|
* variable dump.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintFormattedMessage($message) {
|
|
}
|
|
|
|
/**
|
|
* By default just ignores user generated events.
|
|
* @param string $type Event type as text.
|
|
* @param mixed $payload Message or object.
|
|
* @access public
|
|
*/
|
|
function paintSignal($type, $payload) {
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Recipient of generated test messages that can display
|
|
* page footers and headers. Also keeps track of the
|
|
* test nesting. This is the main base class on which
|
|
* to build the finished test (page based) displays.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
*/
|
|
class SimpleReporter extends SimpleScorer {
|
|
var $_test_stack;
|
|
var $_size;
|
|
var $_progress;
|
|
|
|
/**
|
|
* Starts the display with no results in.
|
|
* @access public
|
|
*/
|
|
function SimpleReporter() {
|
|
$this->SimpleScorer();
|
|
$this->_test_stack = array();
|
|
$this->_size = null;
|
|
$this->_progress = 0;
|
|
}
|
|
|
|
/**
|
|
* Gets the formatter for variables and other small
|
|
* generic data items.
|
|
* @return SimpleDumper Formatter.
|
|
* @access public
|
|
*/
|
|
function getDumper() {
|
|
return new SimpleDumper();
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test. Will also paint
|
|
* the page header and footer if this is the
|
|
* first test. Will stash the size if the first
|
|
* start.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
if (! isset($this->_size)) {
|
|
$this->_size = $size;
|
|
}
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintHeader($test_name);
|
|
}
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @param integer $progress Number of test cases ending.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
array_pop($this->_test_stack);
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintFooter($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case. Will also paint
|
|
* the page header and footer if this is the
|
|
* first test. Will stash the size if the first
|
|
* start.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
if (! isset($this->_size)) {
|
|
$this->_size = 1;
|
|
}
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintHeader($test_name);
|
|
}
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
$this->_progress++;
|
|
array_pop($this->_test_stack);
|
|
if (count($this->_test_stack) == 0) {
|
|
$this->paintFooter($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test that is starting.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
$this->_test_stack[] = $test_name;
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method. Will paint the page
|
|
* footer if the stack of tests has unwound.
|
|
* @param string $test_name Name of test that is ending.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
array_pop($this->_test_stack);
|
|
}
|
|
|
|
/**
|
|
* Paints the test document header.
|
|
* @param string $test_name First test top level
|
|
* to start.
|
|
* @access public
|
|
* @abstract
|
|
*/
|
|
function paintHeader($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Paints the test document footer.
|
|
* @param string $test_name The top level test.
|
|
* @access public
|
|
* @abstract
|
|
*/
|
|
function paintFooter($test_name) {
|
|
}
|
|
|
|
/**
|
|
* Accessor for internal test stack. For
|
|
* subclasses that need to see the whole test
|
|
* history for display purposes.
|
|
* @return array List of methods in nesting order.
|
|
* @access public
|
|
*/
|
|
function getTestList() {
|
|
return $this->_test_stack;
|
|
}
|
|
|
|
/**
|
|
* Accessor for total test size in number
|
|
* of test cases. Null until the first
|
|
* test is started.
|
|
* @return integer Total number of cases at start.
|
|
* @access public
|
|
*/
|
|
function getTestCaseCount() {
|
|
return $this->_size;
|
|
}
|
|
|
|
/**
|
|
* Accessor for the number of test cases
|
|
* completed so far.
|
|
* @return integer Number of ended cases.
|
|
* @access public
|
|
*/
|
|
function getTestCaseProgress() {
|
|
return $this->_progress;
|
|
}
|
|
|
|
/**
|
|
* Static check for running in the comand line.
|
|
* @return boolean True if CLI.
|
|
* @access public
|
|
* @static
|
|
*/
|
|
function inCli() {
|
|
return php_sapi_name() == 'cli';
|
|
}
|
|
}
|
|
|
|
/**
|
|
* For modifying the behaviour of the visual reporters.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
*/
|
|
class SimpleReporterDecorator {
|
|
var $_reporter;
|
|
|
|
/**
|
|
* Mediates between the reporter and the test case.
|
|
* @param SimpleScorer $reporter Reporter to receive events.
|
|
*/
|
|
function SimpleReporterDecorator(&$reporter) {
|
|
$this->_reporter = &$reporter;
|
|
}
|
|
|
|
/**
|
|
* Signals that the next evaluation will be a dry
|
|
* run. That is, the structure events will be
|
|
* recorded, but no tests will be run.
|
|
* @param boolean $is_dry Dry run if true.
|
|
* @access public
|
|
*/
|
|
function makeDry($is_dry = true) {
|
|
$this->_reporter->makeDry($is_dry);
|
|
}
|
|
|
|
/**
|
|
* Accessor for current status. Will be false
|
|
* if there have been any failures or exceptions.
|
|
* Used for command line tools.
|
|
* @return boolean True if no failures.
|
|
* @access public
|
|
*/
|
|
function getStatus() {
|
|
return $this->_reporter->getStatus();
|
|
}
|
|
|
|
/**
|
|
* The reporter has a veto on what should be run.
|
|
* @param string $test_case_name name of test case.
|
|
* @param string $method Name of test method.
|
|
* @return boolean True if test should be run.
|
|
* @access public
|
|
*/
|
|
function shouldInvoke($test_case_name, $method) {
|
|
return $this->_reporter->shouldInvoke($test_case_name, $method);
|
|
}
|
|
|
|
/**
|
|
* Can wrap the invoker in preperation for running
|
|
* a test.
|
|
* @param SimpleInvoker $invoker Individual test runner.
|
|
* @return SimpleInvoker Wrapped test runner.
|
|
* @access public
|
|
*/
|
|
function &createInvoker(&$invoker) {
|
|
return $this->_reporter->createInvoker($invoker);
|
|
}
|
|
|
|
/**
|
|
* Gets the formatter for variables and other small
|
|
* generic data items.
|
|
* @return SimpleDumper Formatter.
|
|
* @access public
|
|
*/
|
|
function getDumper() {
|
|
return $this->_reporter->getDumper();
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
$this->_reporter->paintGroupStart($test_name, $size);
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
$this->_reporter->paintGroupEnd($test_name);
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
$this->_reporter->paintCaseStart($test_name);
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
$this->_reporter->paintCaseEnd($test_name);
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
$this->_reporter->paintMethodStart($test_name);
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
$this->_reporter->paintMethodEnd($test_name);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintPass($message) {
|
|
$this->_reporter->paintPass($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintFail($message) {
|
|
$this->_reporter->paintFail($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text of error formatted by
|
|
* the test case.
|
|
* @access public
|
|
*/
|
|
function paintError($message) {
|
|
$this->_reporter->paintError($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param Exception $exception Exception to show.
|
|
* @access public
|
|
*/
|
|
function paintException($exception) {
|
|
$this->_reporter->paintException($exception);
|
|
}
|
|
|
|
/**
|
|
* Prints the message for skipping tests.
|
|
* @param string $message Text of skip condition.
|
|
* @access public
|
|
*/
|
|
function paintSkip($message) {
|
|
$this->_reporter->paintSkip($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintMessage($message) {
|
|
$this->_reporter->paintMessage($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintFormattedMessage($message) {
|
|
$this->_reporter->paintFormattedMessage($message);
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $type Event type as text.
|
|
* @param mixed $payload Message or object.
|
|
* @return boolean Should return false if this
|
|
* type of signal should fail the
|
|
* test suite.
|
|
* @access public
|
|
*/
|
|
function paintSignal($type, &$payload) {
|
|
$this->_reporter->paintSignal($type, $payload);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* For sending messages to multiple reporters at
|
|
* the same time.
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
*/
|
|
class MultipleReporter {
|
|
var $_reporters = array();
|
|
|
|
/**
|
|
* Adds a reporter to the subscriber list.
|
|
* @param SimpleScorer $reporter Reporter to receive events.
|
|
* @access public
|
|
*/
|
|
function attachReporter(&$reporter) {
|
|
$this->_reporters[] = &$reporter;
|
|
}
|
|
|
|
/**
|
|
* Signals that the next evaluation will be a dry
|
|
* run. That is, the structure events will be
|
|
* recorded, but no tests will be run.
|
|
* @param boolean $is_dry Dry run if true.
|
|
* @access public
|
|
*/
|
|
function makeDry($is_dry = true) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->makeDry($is_dry);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Accessor for current status. Will be false
|
|
* if there have been any failures or exceptions.
|
|
* If any reporter reports a failure, the whole
|
|
* suite fails.
|
|
* @return boolean True if no failures.
|
|
* @access public
|
|
*/
|
|
function getStatus() {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
if (! $this->_reporters[$i]->getStatus()) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* The reporter has a veto on what should be run.
|
|
* It requires all reporters to want to run the method.
|
|
* @param string $test_case_name name of test case.
|
|
* @param string $method Name of test method.
|
|
* @access public
|
|
*/
|
|
function shouldInvoke($test_case_name, $method) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
if (! $this->_reporters[$i]->shouldInvoke($test_case_name, $method)) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Every reporter gets a chance to wrap the invoker.
|
|
* @param SimpleInvoker $invoker Individual test runner.
|
|
* @return SimpleInvoker Wrapped test runner.
|
|
* @access public
|
|
*/
|
|
function &createInvoker(&$invoker) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$invoker = &$this->_reporters[$i]->createInvoker($invoker);
|
|
}
|
|
return $invoker;
|
|
}
|
|
|
|
/**
|
|
* Gets the formatter for variables and other small
|
|
* generic data items.
|
|
* @return SimpleDumper Formatter.
|
|
* @access public
|
|
*/
|
|
function getDumper() {
|
|
return new SimpleDumper();
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @param integer $size Number of test cases starting.
|
|
* @access public
|
|
*/
|
|
function paintGroupStart($test_name, $size) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintGroupStart($test_name, $size);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a group test.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintGroupEnd($test_name) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintGroupEnd($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseStart($test_name) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintCaseStart($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test case.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintCaseEnd($test_name) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintCaseEnd($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the start of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodStart($test_name) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintMethodStart($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Paints the end of a test method.
|
|
* @param string $test_name Name of test or other label.
|
|
* @access public
|
|
*/
|
|
function paintMethodEnd($test_name) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintMethodEnd($test_name);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintPass($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintPass($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Message is ignored.
|
|
* @access public
|
|
*/
|
|
function paintFail($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintFail($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text of error formatted by
|
|
* the test case.
|
|
* @access public
|
|
*/
|
|
function paintError($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintError($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param Exception $exception Exception to display.
|
|
* @access public
|
|
*/
|
|
function paintException($exception) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintException($exception);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Prints the message for skipping tests.
|
|
* @param string $message Text of skip condition.
|
|
* @access public
|
|
*/
|
|
function paintSkip($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintSkip($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintMessage($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintMessage($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $message Text to display.
|
|
* @access public
|
|
*/
|
|
function paintFormattedMessage($message) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintFormattedMessage($message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Chains to the wrapped reporter.
|
|
* @param string $type Event type as text.
|
|
* @param mixed $payload Message or object.
|
|
* @return boolean Should return false if this
|
|
* type of signal should fail the
|
|
* test suite.
|
|
* @access public
|
|
*/
|
|
function paintSignal($type, &$payload) {
|
|
for ($i = 0; $i < count($this->_reporters); $i++) {
|
|
$this->_reporters[$i]->paintSignal($type, $payload);
|
|
}
|
|
}
|
|
}
|
|
?>
|