875 lines
24 KiB
PHP
875 lines
24 KiB
PHP
<?php
|
|
/**
|
|
* base include file for SimpleTest
|
|
* @package SimpleTest
|
|
* @subpackage UnitTester
|
|
* @version $Id: scorer.php 2011 2011-04-29 08:22:48Z pp11 $
|
|
*/
|
|
|
|
/**#@+*/
|
|
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 {
|
|
private $passes;
|
|
private $fails;
|
|
private $exceptions;
|
|
private $is_dry_run;
|
|
|
|
/**
|
|
* Starts the test run with no results.
|
|
* @access public
|
|
*/
|
|
function __construct() {
|
|
$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
|
|
* privateiable 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 {
|
|
private $test_stack;
|
|
private $size;
|
|
private $progress;
|
|
|
|
/**
|
|
* Starts the display with no results in.
|
|
* @access public
|
|
*/
|
|
function __construct() {
|
|
parent::__construct();
|
|
$this->test_stack = array();
|
|
$this->size = null;
|
|
$this->progress = 0;
|
|
}
|
|
|
|
/**
|
|
* Gets the formatter for 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 {
|
|
protected $reporter;
|
|
|
|
/**
|
|
* Mediates between the reporter and the test case.
|
|
* @param SimpleScorer $reporter Reporter to receive events.
|
|
*/
|
|
function __construct($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 nesting of the test cases so far. Not
|
|
* all reporters have this facility.
|
|
* @return array Test list if accessible.
|
|
* @access public
|
|
*/
|
|
function getTestList() {
|
|
if (method_exists($this->reporter, 'getTestList')) {
|
|
return $this->reporter->getTestList();
|
|
} else {
|
|
return array();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 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 preparation 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 privateiables 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 {
|
|
private $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 privateiables 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);
|
|
}
|
|
}
|
|
}
|
|
?>
|