1<?php
2/**
3 *  base include file for SimpleTest
4 *  @package    SimpleTest
5 *  @subpackage Extensions
6 *  @author Rene vd O (original code)
7 *  @author Perrick Penet
8 *  @author Marcus Baker
9 *  @version  $Id$
10 */
11
12/**
13 *  include other SimpleTest class files
14 */
15require_once(dirname(__FILE__) . '/scorer.php');
16
17/**
18 *  A single test result.
19 *  @package    SimpleTest
20 *  @subpackage Extensions
21 */
22abstract class SimpleResult {
23    public $time;
24    public $breadcrumb;
25    public $message;
26
27    /**
28     * Records the test result as public members.
29     * @param array $breadcrumb     Test stack at the time of the event.
30     * @param string $message       The messsage to the human.
31     */
32    function __construct($breadcrumb, $message) {
33        list($this->time, $this->breadcrumb, $this->message) =
34                array(time(), $breadcrumb, $message);
35    }
36}
37
38/**
39 *    A single pass captured for later.
40 *    @package    SimpleTest
41 *    @subpackage Extensions
42 */
43class SimpleResultOfPass extends SimpleResult { }
44
45/**
46 *    A single failure captured for later.
47 *    @package    SimpleTest
48 *    @subpackage Extensions
49 */
50class SimpleResultOfFail extends SimpleResult { }
51
52/**
53 *    A single exception captured for later.
54 *    @package    SimpleTest
55 *    @subpackage Extensions
56 */
57class SimpleResultOfException extends SimpleResult { }
58
59/**
60 *    Array-based test recorder. Returns an array
61 *    with timestamp, status, test name and message for each pass and failure.
62 *    @package    SimpleTest
63 *    @subpackage Extensions
64 */
65class Recorder extends SimpleReporterDecorator {
66    public $results = array();
67
68    /**
69     *    Stashes the pass as a SimpleResultOfPass
70     *    for later retrieval.
71     *    @param string $message    Pass message to be displayed
72     *                              eventually.
73     */
74    function paintPass($message) {
75        parent::paintPass($message);
76        $this->results[] = new SimpleResultOfPass(parent::getTestList(), $message);
77    }
78
79    /**
80     *    Stashes the fail as a SimpleResultOfFail
81     *    for later retrieval.
82     *    @param string $message    Failure message to be displayed
83     *                              eventually.
84     */
85    function paintFail($message) {
86        parent::paintFail($message);
87        $this->results[] = new SimpleResultOfFail(parent::getTestList(), $message);
88    }
89
90    /**
91     *    Stashes the exception as a SimpleResultOfException
92     *    for later retrieval.
93     *    @param string $message    Exception message to be displayed
94     *                              eventually.
95     */
96    function paintException($message) {
97        parent::paintException($message);
98        $this->results[] = new SimpleResultOfException(parent::getTestList(), $message);
99    }
100}
101?>
102