Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3
 
4
/**
5
 * PHP Version 4
6
 *
7
 * Copyright (c) 2002-2005, Sebastian Bergmann <sb@sebastian-bergmann.de>.
8
 * All rights reserved.
9
 *
10
 * Redistribution and use in source and binary forms, with or without
11
 * modification, are permitted provided that the following conditions
12
 * are met:
13
 *
14
 *   * Redistributions of source code must retain the above copyright
15
 *     notice, this list of conditions and the following disclaimer.
16
 *
17
 *   * Redistributions in binary form must reproduce the above copyright
18
 *     notice, this list of conditions and the following disclaimer in
19
 *     the documentation and/or other materials provided with the
20
 *     distribution.
21
 *
22
 *   * Neither the name of Sebastian Bergmann nor the names of his
23
 *     contributors may be used to endorse or promote products derived
24
 *     from this software without specific prior written permission.
25
 *
26
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
29
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
30
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
32
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
35
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
36
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37
 * POSSIBILITY OF SUCH DAMAGE.
38
 *
39
 * @category   Testing
40
 * @package    PHPUnit
41
 * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
42
 * @copyright  2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de>
43
 * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
44
 * @version    CVS: $Id: TestResult.php,v 1.18 2005/11/10 09:47:15 sebastian Exp $
45
 * @link       http://pear.php.net/package/PHPUnit
46
 * @since      File available since Release 1.0.0
47
 */
48
 
49
require_once 'PHPUnit/TestFailure.php';
50
require_once 'PHPUnit/TestListener.php';
51
 
52
if (!function_exists('is_a')) {
53
    require_once 'PHP/Compat/Function/is_a.php';
54
}
55
 
56
/**
57
 * A TestResult collects the results of executing a test case.
58
 *
59
 * @category   Testing
60
 * @package    PHPUnit
61
 * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
62
 * @copyright  2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de>
63
 * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
64
 * @version    Release: 1.3.2
65
 * @link       http://pear.php.net/package/PHPUnit
66
 * @since      Class available since Release 1.0.0
67
 */
68
class PHPUnit_TestResult {
69
    /**
70
     * @var    array
71
     * @access protected
72
     */
73
    var $_errors = array();
74
 
75
    /**
76
     * @var    array
77
     * @access protected
78
     */
79
    var $_failures = array();
80
 
81
     /**
82
     * @var    array
83
     * @access protected
84
     */
85
    var $_listeners = array();
86
 
87
    /**
88
     * @var    array
89
     * @access protected
90
     */
91
    var $_passedTests = array();
92
 
93
    /**
94
     * @var    integer
95
     * @access protected
96
     */
97
    var $_runTests = 0;
98
 
99
    /**
100
     * @var    boolean
101
     * @access private
102
     */
103
    var $_stop = FALSE;
104
 
105
    /**
106
     * Adds an error to the list of errors.
107
     * The passed in exception caused the error.
108
     *
109
     * @param  object
110
     * @param  object
111
     * @access public
112
     */
113
    function addError(&$test, &$t) {
114
        $this->_errors[] = new PHPUnit_TestFailure($test, $t);
115
 
116
        for ($i = 0; $i < sizeof($this->_listeners); $i++) {
117
            $this->_listeners[$i]->addError($test, $t);
118
        }
119
    }
120
 
121
    /**
122
     * Adds a failure to the list of failures.
123
     * The passed in exception caused the failure.
124
     *
125
     * @param  object
126
     * @param  object
127
     * @access public
128
     */
129
    function addFailure(&$test, &$t) {
130
        $this->_failures[] = new PHPUnit_TestFailure($test, $t);
131
 
132
        for ($i = 0; $i < sizeof($this->_listeners); $i++) {
133
            $this->_listeners[$i]->addFailure($test, $t);
134
        }
135
    }
136
 
137
    /**
138
     * Registers a TestListener.
139
     *
140
     * @param  object
141
     * @access public
142
     */
143
    function addListener(&$listener) {
144
        if (is_object($listener) &&
145
            is_a($listener, 'PHPUnit_TestListener')) {
146
            $this->_listeners[] = &$listener;
147
        }
148
    }
149
 
150
    /**
151
     * Adds a passed test to the list of passed tests.
152
     *
153
     * @param  object
154
     * @access public
155
     */
156
    function addPassedTest(&$test) {
157
        $this->_passedTests[] = &$test;
158
    }
159
 
160
    /**
161
     * Informs the result that a test was completed.
162
     *
163
     * @param  object
164
     * @access public
165
     */
166
    function endTest(&$test) {
167
        for ($i = 0; $i < sizeof($this->_listeners); $i++) {
168
            $this->_listeners[$i]->endTest($test);
169
        }
170
    }
171
 
172
    /**
173
     * Gets the number of detected errors.
174
     *
175
     * @return integer
176
     * @access public
177
     */
178
    function errorCount() {
179
        return sizeof($this->_errors);
180
    }
181
 
182
    /**
183
     * Returns an Enumeration for the errors.
184
     *
185
     * @return array
186
     * @access public
187
     */
188
    function &errors() {
189
        return $this->_errors;
190
    }
191
 
192
    /**
193
     * Gets the number of detected failures.
194
     *
195
     * @return integer
196
     * @access public
197
     */
198
    function failureCount() {
199
        return sizeof($this->_failures);
200
    }
201
 
202
    /**
203
     * Returns an Enumeration for the failures.
204
     *
205
     * @return array
206
     * @access public
207
     */
208
    function &failures() {
209
        return $this->_failures;
210
    }
211
 
212
    /**
213
     * Returns an Enumeration for the passed tests.
214
     *
215
     * @return array
216
     * @access public
217
     */
218
    function &passedTests() {
219
        return $this->_passedTests;
220
    }
221
 
222
    /**
223
     * Unregisters a TestListener.
224
     * This requires the Zend Engine 2 (to work properly).
225
     *
226
     * @param  object
227
     * @access public
228
     */
229
    function removeListener(&$listener) {
230
        for ($i = 0; $i < sizeof($this->_listeners); $i++) {
231
            if ($this->_listeners[$i] === $listener) {
232
                unset($this->_listeners[$i]);
233
            }
234
        }
235
    }
236
 
237
    /**
238
     * Runs a TestCase.
239
     *
240
     * @param  object
241
     * @access public
242
     */
243
    function run(&$test) {
244
        $this->startTest($test);
245
        $this->_runTests++;
246
        $test->runBare();
247
        $this->endTest($test);
248
    }
249
 
250
    /**
251
     * Gets the number of run tests.
252
     *
253
     * @return integer
254
     * @access public
255
     */
256
    function runCount() {
257
        return $this->_runTests;
258
    }
259
 
260
    /**
261
     * Checks whether the test run should stop.
262
     *
263
     * @access public
264
     */
265
    function shouldStop() {
266
        return $this->_stop;
267
    }
268
 
269
    /**
270
     * Informs the result that a test will be started.
271
     *
272
     * @param  object
273
     * @access public
274
     */
275
    function startTest(&$test) {
276
        for ($i = 0; $i < sizeof($this->_listeners); $i++) {
277
            $this->_listeners[$i]->startTest($test);
278
        }
279
    }
280
 
281
    /**
282
     * Marks that the test run should stop.
283
     *
284
     * @access public
285
     */
286
    function stop() {
287
        $this->_stop = TRUE;
288
    }
289
 
290
    /**
291
     * Returns a HTML representation of the test result.
292
     *
293
     * @return string
294
     * @access public
295
     */
296
    function toHTML() {
297
        return '<pre>' . htmlspecialchars($this->toString()) . '</pre>';
298
    }
299
 
300
    /**
301
     * Returns a text representation of the test result.
302
     *
303
     * @return string
304
     * @access public
305
     */
306
    function toString() {
307
        $result = '';
308
 
309
        foreach ($this->_passedTests as $passedTest) {
310
            $result .= sprintf(
311
              "TestCase %s->%s() passed\n",
312
 
313
              get_class($passedTest),
314
              $passedTest->getName()
315
            );
316
        }
317
 
318
        foreach ($this->_failures as $failedTest) {
319
            $result .= $failedTest->toString();
320
        }
321
 
322
        return $result;
323
    }
324
 
325
    /**
326
     * Returns whether the entire test was successful or not.
327
     *
328
     * @return boolean
329
     * @access public
330
     */
331
    function wasSuccessful() {
332
        if (empty($this->_errors) && empty($this->_failures)) {
333
            return TRUE;
334
        } else {
335
            return FALSE;
336
        }
337
    }
338
}
339
 
340
/*
341
 * Local variables:
342
 * tab-width: 4
343
 * c-basic-offset: 4
344
 * c-hanging-comment-ender-p: nil
345
 * End:
346
 */
347
?>