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: Assert.php,v 1.29 2005/11/10 09:47:14 sebastian Exp $
45
 * @link       http://pear.php.net/package/PHPUnit
46
 * @since      File available since Release 1.0.0
47
 */
48
 
49
/**
50
 * A set of assert methods.
51
 *
52
 * @category   Testing
53
 * @package    PHPUnit
54
 * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
55
 * @copyright  2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de>
56
 * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
57
 * @version    Release: 1.3.2
58
 * @link       http://pear.php.net/package/PHPUnit
59
 * @since      Class available since Release 1.0.0
60
 */
61
class PHPUnit_Assert {
62
    /**
63
     * @var    boolean
64
     * @access private
65
     */
66
    var $_looselyTyped = FALSE;
67
 
68
    /**
69
     * Asserts that a haystack contains a needle.
70
     *
71
     * @param  mixed
72
     * @param  mixed
73
     * @param  string
74
     * @access public
75
     * @since  Method available since Release 1.1.0
76
     */
77
    function assertContains($needle, $haystack, $message = '') {
78
        if (is_string($needle) && is_string($haystack)) {
79
            $this->assertTrue(strpos($haystack, $needle) !== FALSE, $message);
80
        }
81
 
82
        else if (is_array($haystack) && !is_object($needle)) {
83
            $this->assertTrue(in_array($needle, $haystack), $message);
84
        }
85
 
86
        else {
87
            $this->fail('Unsupported parameter passed to assertContains().');
88
        }
89
    }
90
 
91
    /**
92
     * Asserts that a haystack does not contain a needle.
93
     *
94
     * @param  mixed
95
     * @param  mixed
96
     * @param  string
97
     * @access public
98
     * @since  Method available since Release 1.1.0
99
     */
100
    function assertNotContains($needle, $haystack, $message = '') {
101
        if (is_string($needle) && is_string($haystack)) {
102
            $this->assertFalse(strpos($haystack, $needle) !== FALSE, $message);
103
        }
104
 
105
        else if (is_array($haystack) && !is_object($needle)) {
106
            $this->assertFalse(in_array($needle, $haystack), $message);
107
        }
108
 
109
        else {
110
            $this->fail('Unsupported parameter passed to assertNotContains().');
111
        }
112
    }
113
 
114
    /**
115
     * Asserts that two variables are equal.
116
     *
117
     * @param  mixed
118
     * @param  mixed
119
     * @param  string
120
     * @param  mixed
121
     * @access public
122
     */
123
    function assertEquals($expected, $actual, $message = '', $delta = 0) {
124
        if ((is_array($actual)  && is_array($expected)) ||
125
            (is_object($actual) && is_object($expected))) {
126
            if (is_array($actual) && is_array($expected)) {
127
                ksort($actual);
128
                ksort($expected);
129
            }
130
 
131
            if ($this->_looselyTyped) {
132
                $actual   = $this->_convertToString($actual);
133
                $expected = $this->_convertToString($expected);
134
            }
135
 
136
            $actual   = serialize($actual);
137
            $expected = serialize($expected);
138
 
139
            $message = sprintf(
140
              '%sexpected %s, actual %s',
141
 
142
              !empty($message) ? $message . ' ' : '',
143
              $expected,
144
              $actual
145
            );
146
 
147
            if ($actual !== $expected) {
148
                return $this->fail($message);
149
            }
150
        }
151
 
152
        elseif (is_numeric($actual) && is_numeric($expected)) {
153
            $message = sprintf(
154
              '%sexpected %s%s, actual %s',
155
 
156
              !empty($message) ? $message . ' ' : '',
157
              $expected,
158
              ($delta != 0) ? ('+/- ' . $delta) : '',
159
              $actual
160
            );
161
 
162
            if (!($actual >= ($expected - $delta) && $actual <= ($expected + $delta))) {
163
                return $this->fail($message);
164
            }
165
        }
166
 
167
        else {
168
            $message = sprintf(
169
              '%sexpected %s, actual %s',
170
 
171
              !empty($message) ? $message . ' ' : '',
172
              $expected,
173
              $actual
174
            );
175
 
176
            if ($actual !== $expected) {
177
                return $this->fail($message);
178
            }
179
        }
180
    }
181
 
182
    /**
183
     * Asserts that two variables reference the same object.
184
     * This requires the Zend Engine 2 to work.
185
     *
186
     * @param  object
187
     * @param  object
188
     * @param  string
189
     * @access public
190
     * @deprecated
191
     */
192
    function assertSame($expected, $actual, $message = '') {
193
        if (!version_compare(phpversion(), '5.0.0', '>=')) {
194
            $this->fail('assertSame() only works with PHP >= 5.0.0.');
195
        }
196
 
197
        if ((is_object($expected) || is_null($expected)) &&
198
            (is_object($actual)   || is_null($actual))) {
199
            $message = sprintf(
200
              '%sexpected two variables to reference the same object',
201
 
202
              !empty($message) ? $message . ' ' : ''
203
            );
204
 
205
            if ($expected !== $actual) {
206
                return $this->fail($message);
207
            }
208
        } else {
209
            $this->fail('Unsupported parameter passed to assertSame().');
210
        }
211
    }
212
 
213
    /**
214
     * Asserts that two variables do not reference the same object.
215
     * This requires the Zend Engine 2 to work.
216
     *
217
     * @param  object
218
     * @param  object
219
     * @param  string
220
     * @access public
221
     * @deprecated
222
     */
223
    function assertNotSame($expected, $actual, $message = '') {
224
        if (!version_compare(phpversion(), '5.0.0', '>=')) {
225
            $this->fail('assertNotSame() only works with PHP >= 5.0.0.');
226
        }
227
 
228
        if ((is_object($expected) || is_null($expected)) &&
229
            (is_object($actual)   || is_null($actual))) {
230
            $message = sprintf(
231
              '%sexpected two variables to reference different objects',
232
 
233
              !empty($message) ? $message . ' ' : ''
234
            );
235
 
236
            if ($expected === $actual) {
237
                return $this->fail($message);
238
            }
239
        } else {
240
            $this->fail('Unsupported parameter passed to assertNotSame().');
241
        }
242
    }
243
 
244
    /**
245
     * Asserts that a variable is not NULL.
246
     *
247
     * @param  mixed
248
     * @param  string
249
     * @access public
250
     */
251
    function assertNotNull($actual, $message = '') {
252
        $message = sprintf(
253
          '%sexpected NOT NULL, actual NULL',
254
 
255
          !empty($message) ? $message . ' ' : ''
256
        );
257
 
258
        if (is_null($actual)) {
259
            return $this->fail($message);
260
        }
261
    }
262
 
263
    /**
264
     * Asserts that a variable is NULL.
265
     *
266
     * @param  mixed
267
     * @param  string
268
     * @access public
269
     */
270
    function assertNull($actual, $message = '') {
271
        $message = sprintf(
272
          '%sexpected NULL, actual NOT NULL',
273
 
274
          !empty($message) ? $message . ' ' : ''
275
        );
276
 
277
        if (!is_null($actual)) {
278
            return $this->fail($message);
279
        }
280
    }
281
 
282
    /**
283
     * Asserts that a condition is true.
284
     *
285
     * @param  boolean
286
     * @param  string
287
     * @access public
288
     */
289
    function assertTrue($condition, $message = '') {
290
        $message = sprintf(
291
          '%sexpected TRUE, actual FALSE',
292
 
293
          !empty($message) ? $message . ' ' : ''
294
        );
295
 
296
        if (!$condition) {
297
            return $this->fail($message);
298
        }
299
    }
300
 
301
    /**
302
     * Asserts that a condition is false.
303
     *
304
     * @param  boolean
305
     * @param  string
306
     * @access public
307
     */
308
    function assertFalse($condition, $message = '') {
309
        $message = sprintf(
310
          '%sexpected FALSE, actual TRUE',
311
 
312
          !empty($message) ? $message . ' ' : ''
313
        );
314
 
315
        if ($condition) {
316
            return $this->fail($message);
317
        }
318
    }
319
 
320
    /**
321
     * Asserts that a string matches a given regular expression.
322
     *
323
     * @param  string
324
     * @param  string
325
     * @param  string
326
     * @access public
327
     */
328
    function assertRegExp($pattern, $string, $message = '') {
329
        $message = sprintf(
330
          '%s"%s" does not match pattern "%s"',
331
 
332
          !empty($message) ? $message . ' ' : '',
333
          $string,
334
          $pattern
335
        );
336
 
337
        if (!preg_match($pattern, $string)) {
338
            return $this->fail($message);
339
        }
340
    }
341
 
342
    /**
343
     * Asserts that a string does not match a given regular expression.
344
     *
345
     * @param  string
346
     * @param  string
347
     * @param  string
348
     * @access public
349
     * @since  Method available since Release 1.1.0
350
     */
351
    function assertNotRegExp($pattern, $string, $message = '') {
352
        $message = sprintf(
353
          '%s"%s" matches pattern "%s"',
354
 
355
          !empty($message) ? $message . ' ' : '',
356
          $string,
357
          $pattern
358
        );
359
 
360
        if (preg_match($pattern, $string)) {
361
            return $this->fail($message);
362
        }
363
    }
364
 
365
    /**
366
     * Asserts that a variable is of a given type.
367
     *
368
     * @param  string          $expected
369
     * @param  mixed           $actual
370
     * @param  optional string $message
371
     * @access public
372
     */
373
    function assertType($expected, $actual, $message = '') {
374
        return $this->assertEquals(
375
          $expected,
376
          gettype($actual),
377
          $message
378
        );
379
    }
380
 
381
    /**
382
     * Converts a value to a string.
383
     *
384
     * @param  mixed   $value
385
     * @access private
386
     */
387
    function _convertToString($value) {
388
        foreach ($value as $k => $v) {
389
            if (is_array($v)) {
390
                $value[$k] = $this->_convertToString($value[$k]);
391
            } else {
392
                settype($value[$k], 'string');
393
            }
394
        }
395
 
396
        return $value;
397
    }
398
 
399
    /**
400
     * @param  boolean $looselyTyped
401
     * @access public
402
     */
403
    function setLooselyTyped($looselyTyped) {
404
        if (is_bool($looselyTyped)) {
405
            $this->_looselyTyped = $looselyTyped;
406
        }
407
    }
408
 
409
    /**
410
     * Fails a test with the given message.
411
     *
412
     * @param  string
413
     * @access protected
414
     * @abstract
415
     */
416
    function fail($message = '') { /* abstract */ }
417
}
418
 
419
/*
420
 * Local variables:
421
 * tab-width: 4
422
 * c-basic-offset: 4
423
 * c-hanging-comment-ender-p: nil
424
 * End:
425
 */
426
?>