diff options
| author | xue <> | 2006-06-19 18:38:29 +0000 | 
|---|---|---|
| committer | xue <> | 2006-06-19 18:38:29 +0000 | 
| commit | 588727c7e2b8954ec3dbde293cf4c4d68b119f9b (patch) | |
| tree | fdcc16181a20335547953ccf1550e0006c11bf28 /buildscripts/PHPUnit2/Framework | |
| parent | 127f78a4db3cc0fbbbb92f5b1abcfdce4a9af93b (diff) | |
Merge from 3.0 branch till 1185.
Diffstat (limited to 'buildscripts/PHPUnit2/Framework')
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/Assert.php | 626 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/AssertionFailedError.php | 80 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/ComparisonFailure.php | 153 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/Error.php | 88 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/IncompleteTest.php | 72 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/IncompleteTestError.php | 75 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/Test.php | 87 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/TestCase.php | 292 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/TestFailure.php | 154 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/TestListener.php | 135 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/TestResult.php | 447 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/TestSuite.php | 554 | ||||
| -rw-r--r-- | buildscripts/PHPUnit2/Framework/Warning.php | 94 | 
13 files changed, 2857 insertions, 0 deletions
diff --git a/buildscripts/PHPUnit2/Framework/Assert.php b/buildscripts/PHPUnit2/Framework/Assert.php new file mode 100644 index 00000000..3465afea --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/Assert.php @@ -0,0 +1,626 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: Assert.php,v 1.45.2.4 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +require_once 'PHPUnit2/Framework/ComparisonFailure.php';
 +
 +/**
 + * A set of assert methods.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + * @static
 + */
 +class PHPUnit2_Framework_Assert {
 +    /**
 +     * @var    boolean
 +     * @access private
 +     * @static
 +     */
 +    private static $looselyTyped = FALSE;
 +
 +    /**
 +     * Protect constructor since it is a static only class.
 +     *
 +     * @access protected
 +     */
 +    protected function __construct() {
 +    }
 +
 +    /**
 +     * Asserts that a haystack contains a needle.
 +     *
 +     * @param  mixed   $needle
 +     * @param  mixed   $haystack
 +     * @param  string  $message
 +     * @access public
 +     * @static
 +     * @since  Method available since Release 2.1.0
 +     */
 +    public static function assertContains($needle, $haystack, $message = '') {
 +        self::doAssertContains($needle, $haystack, TRUE, $message);
 +    }
 +
 +    /**
 +     * Asserts that a haystack does not contain a needle.
 +     *
 +     * @param  mixed   $needle
 +     * @param  mixed   $haystack
 +     * @param  string  $message
 +     * @access public
 +     * @static
 +     * @since  Method available since Release 2.1.0
 +     */
 +    public static function assertNotContains($needle, $haystack, $message = '') {
 +        self::doAssertContains($needle, $haystack, FALSE, $message);
 +    }
 +
 +    /**
 +     * @param  mixed   $needle
 +     * @param  mixed   $haystack
 +     * @param  boolean $condition
 +     * @param  string  $message
 +     * @throws Exception
 +     * @access private
 +     * @static
 +     * @since  Method available since Release 2.2.0
 +     */
 +    private static function doAssertContains($needle, $haystack, $condition, $message) {
 +        $found = FALSE;
 +
 +        if (is_array($haystack) ||
 +           (is_object($haystack) && $haystack instanceof Iterator)) {
 +            foreach ($haystack as $straw) {
 +                if ($straw === $needle) {
 +                    $found = TRUE;
 +                    break;
 +                }
 +            }
 +        }
 +
 +        else if (is_string($needle) && is_string($haystack)) {
 +            if (strpos($haystack, $needle) !== FALSE) {
 +                $found = TRUE;
 +            }
 +        }
 +
 +        else {
 +            throw new Exception;
 +        }
 +
 +        if ($condition && !$found) {
 +            self::fail(
 +              sprintf(
 +                '%s%s"%s" does not contain "%s"',
 +
 +                $message,
 +                ($message != '') ? ' ' : '',
 +                self::objectToString($haystack),
 +                self::objectToString($needle)
 +              )
 +            );
 +        }
 +
 +        else if (!$condition && $found) {
 +            self::fail(
 +              sprintf(
 +                '%s%s"%s" contains "%s"',
 +
 +                $message,
 +                ($message != '') ? ' ' : '',
 +                self::objectToString($haystack),
 +                self::objectToString($needle)
 +              )
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Asserts that two variables are equal.
 +     *
 +     * @param  mixed  $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @param  mixed  $delta
 +     * @access public
 +     * @static
 +     */
 +    public static function assertEquals($expected, $actual, $message = '', $delta = 0) {
 +        self::doAssertEquals($expected, $actual, $delta, TRUE, $message);
 +    }
 +
 +    /**
 +     * Asserts that two variables are not equal.
 +     *
 +     * @param  mixed  $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @param  mixed  $delta
 +     * @access public
 +     * @static
 +     * @since  Method available since Release 2.3.0
 +     */
 +    public static function assertNotEquals($expected, $actual, $message = '', $delta = 0) {
 +        self::doAssertEquals($expected, $actual, $delta, FALSE, $message);
 +    }
 +
 +    /**
 +     * @param  mixed   $expected
 +     * @param  mixed   $actual
 +     * @param  mixed   $delta
 +     * @param  boolean $condition
 +     * @param  string  $message
 +     * @access private
 +     * @static
 +     * @since  Method available since Release 2.3.0
 +     */
 +    private static function doAssertEquals($expected, $actual, $delta, $condition, $message) {
 +        $equal = FALSE;
 +
 +        if (is_array($expected)) {
 +            if (is_array($actual)) {
 +                self::sortArrayRecursively($actual);
 +                self::sortArrayRecursively($expected);
 +
 +                if (self::$looselyTyped) {
 +                    $actual   = self::convertToString($actual);
 +                    $expected = self::convertToString($expected);
 +                }
 +
 +                $equal = (serialize($expected) == serialize($actual));
 +            }
 +        }
 +
 +        else if (is_float($expected) && is_float($actual) && is_float($delta)) {
 +            $equal = (abs($expected - $actual) <= $delta);
 +        }
 +
 +        else {
 +            $equal = (serialize($expected) == serialize($actual));
 +        }
 +
 +        if ($condition && !$equal) {
 +            self::failNotSame(
 +              $expected,
 +              $actual,
 +              $message
 +            );
 +        }
 +
 +        else if (!$condition && $equal) {
 +            self::failSame(
 +              $expected,
 +              $actual,
 +              $message
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a condition is true.
 +     *
 +     * @param  boolean $condition
 +     * @param  string  $message
 +     * @throws Exception
 +     * @access public
 +     * @static
 +     */
 +    public static function assertTrue($condition, $message = '') {
 +        if (is_bool($condition)) {
 +            if (!$condition) {
 +                self::fail($message);
 +            }
 +        } else {
 +            throw new Exception;
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a condition is false.
 +     *
 +     * @param  boolean  $condition
 +     * @param  string   $message
 +     * @throws Exception
 +     * @access public
 +     * @static
 +     */
 +    public static function assertFalse($condition, $message = '') {
 +        if (is_bool($condition)) {
 +            self::assertTrue(!$condition, $message);
 +        } else {
 +            throw new Exception;
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a variable is not NULL.
 +     *
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertNotNull($actual, $message = '') {
 +        if (is_null($actual)) {
 +            self::fail(self::format('NOT NULL', 'NULL', $message));
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a variable is NULL.
 +     *
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertNull($actual, $message = '') {
 +        if (!is_null($actual)) {
 +            self::fail(self::format('NULL', 'NOT NULL', $message));
 +        }
 +    }
 +
 +    /**
 +     * Asserts that two variables have the same type and value.
 +     * Used on objects, it asserts that two variables reference
 +     * the same object.
 +     *
 +     * @param  mixed  $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertSame($expected, $actual, $message = '') {
 +        if ($expected !== $actual) {
 +            self::failNotSame($expected, $actual, $message);
 +        }
 +    }
 +
 +    /**
 +     * Asserts that two variables do not have the same type and value.
 +     * Used on objects, it asserts that two variables do not reference
 +     * the same object.
 +     *
 +     * @param  mixed  $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertNotSame($expected, $actual, $message = '') {
 +        if ($expected === $actual) {
 +            self::failSame($expected, $actual, $message);
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a variable is of a given type.
 +     *
 +     * @param  string $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertType($expected, $actual, $message = '') {
 +        self::doAssertType($expected, $actual, TRUE, $message);
 +    }
 +
 +    /**
 +     * Asserts that a variable is not of a given type.
 +     *
 +     * @param  string $expected
 +     * @param  mixed  $actual
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     * @since  Method available since Release 2.2.0
 +     */
 +    public static function assertNotType($expected, $actual, $message = '') {
 +        self::doAssertType($expected, $actual, FALSE, $message);
 +    }
 +
 +    /**
 +     * @param  string  $expected
 +     * @param  mixed   $actual
 +     * @param  boolean $condition
 +     * @param  string  $message
 +     * @access private
 +     * @static
 +     * @since  Method available since Release 2.2.0
 +     */
 +    private static function doAssertType($expected, $actual, $condition, $message) {
 +        if (!is_string($expected)) {
 +            throw new Exception;
 +        }
 +
 +        if (is_object($actual)) {
 +            $result = $actual instanceof $expected;
 +        } else {
 +            $result = (gettype($actual) == $expected);
 +        }
 +
 +        if ($condition && !$result) {
 +            self::failNotSame(
 +              $expected,
 +              $actual,
 +              $message
 +            );
 +        }
 +
 +        else if (!$condition && $result) {
 +            self::failSame(
 +              $expected,
 +              $actual,
 +              $message
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Asserts that a string matches a given regular expression.
 +     *
 +     * @param  string $pattern
 +     * @param  string $string
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     */
 +    public static function assertRegExp($pattern, $string, $message = '') {
 +        self::doAssertRegExp($pattern, $string, TRUE, $message);
 +    }
 +
 +    /**
 +     * Asserts that a string does not match a given regular expression.
 +     *
 +     * @param  string $pattern
 +     * @param  string $string
 +     * @param  string $message
 +     * @access public
 +     * @static
 +     * @since  Method available since Release 2.1.0
 +     */
 +    public static function assertNotRegExp($pattern, $string, $message = '') {
 +        self::doAssertRegExp($pattern, $string, FALSE, $message);
 +    }
 +
 +    /**
 +     * @param  mixed   $pattern
 +     * @param  mixed   $string
 +     * @param  boolean $condition
 +     * @param  string  $message
 +     * @access private
 +     * @static
 +     * @since  Method available since Release 2.2.0
 +     */
 +    private static function doAssertRegExp($pattern, $string, $condition, $message) {
 +        if (!is_string($pattern) || !is_string($string)) {
 +            throw new Exception;
 +        }
 +
 +        $result = preg_match($pattern, $string);
 +
 +        if ($condition && !$result) {
 +            self::fail(
 +              sprintf(
 +                '%s%s"%s" does not match pattern "%s"',
 +
 +                $message,
 +                ($message != '') ? ' ' : '',
 +                $string,
 +                $pattern
 +              )
 +            );
 +        }
 +
 +        else if (!$condition && $result) {
 +            self::fail(
 +              sprintf(
 +                '%s%s"%s" matches pattern "%s"',
 +
 +                $message,
 +                ($message != '') ? ' ' : '',
 +                $string,
 +                $pattern
 +              )
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Fails a test with the given message.
 +     *
 +     * @param  string $message
 +     * @throws PHPUnit2_Framework_AssertionFailedError
 +     * @access public
 +     * @static
 +     */
 +    public static function fail($message = '') {
 +        throw new PHPUnit2_Framework_AssertionFailedError($message);
 +    }
 +
 +    /**
 +     * @param  string  $message
 +     * @throws PHPUnit2_Framework_AssertionFailedError
 +     * @access private
 +     * @static
 +     */
 +    private static function failSame($message) {
 +        self::fail(
 +          sprintf(
 +            '%s%sexpected not same',
 +
 +            $message,
 +            ($message != '') ? ' ' : ''
 +          )
 +        );
 +    }
 +
 +    /**
 +     * @param  mixed   $expected
 +     * @param  mixed   $actual
 +     * @param  string  $message
 +     * @throws PHPUnit2_Framework_AssertionFailedError
 +     * @access private
 +     * @static
 +     */
 +    private static function failNotSame($expected, $actual, $message) {
 +        if (is_string($expected) && is_string($actual)) {
 +            throw new PHPUnit2_Framework_ComparisonFailure($expected, $actual, $message);
 +        }
 +
 +        self::fail(
 +          sprintf(
 +            '%s%sexpected same: <%s> was not: <%s>',
 +
 +            $message,
 +            ($message != '') ? ' ' : '',
 +            self::objectToString($expected),
 +            self::objectToString($actual)
 +          )
 +        );
 +    }
 +
 +    /**
 +     * @param  mixed   $expected
 +     * @param  mixed   $actual
 +     * @param  string  $message
 +     * @access public
 +     * @static
 +     */
 +    public static function format($expected, $actual, $message) {
 +        return sprintf(
 +          '%s%sexpected: <%s> but was: <%s>',
 +
 +          $message,
 +          ($message != '') ? ' ' : '',
 +          self::objectToString($expected),
 +          self::objectToString($actual)
 +        );
 +    }
 +
 +    /**
 +     * @param  boolean $looselyTyped
 +     * @access public
 +     * @static
 +     */
 +    public static function setLooselyTyped($looselyTyped) {
 +        if (is_bool($looselyTyped)) {
 +            self::$looselyTyped = $looselyTyped;
 +        }
 +    }
 +
 +    /**
 +     * Converts a value to a string.
 +     *
 +     * @param  mixed   $value
 +     * @access private
 +     * @static
 +     */
 +    private static function convertToString($value) {
 +        foreach ($value as $k => $v) {
 +            if (is_array($v)) {
 +                $value[$k] = self::convertToString($value[$k]);
 +            } else if (is_object($v)) {
 +                $value[$k] = self::objectToString($value[$k]);
 +            } else {
 +                settype($value[$k], 'string');
 +            }
 +        }
 +
 +        return $value;
 +    }
 +
 +    /**
 +     * @param  mixed   $object
 +     * @return string
 +     * @access private
 +     * @static
 +     */
 +    private static function objectToString($object) {
 +        if (is_array($object) || is_object($object)) {
 +            $object = serialize($object);
 +        }
 +
 +        return $object;
 +    }
 +
 +    /**
 +     * Sorts an array recursively by its keys.
 +     *
 +     * @param  array $array
 +     * @access private
 +     * @static
 +     * @author Adam Maccabee Trachtenberg <adam@trachtenberg.com>
 +     */
 +    private static function sortArrayRecursively(&$array) {
 +        ksort($array);
 +
 +        foreach($array as $k => $v) {
 +            if (is_array($v)) {
 +                self::sortArrayRecursively($array[$k]);
 +            }
 +        }
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/AssertionFailedError.php b/buildscripts/PHPUnit2/Framework/AssertionFailedError.php new file mode 100644 index 00000000..d3db50ed --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/AssertionFailedError.php @@ -0,0 +1,80 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: AssertionFailedError.php,v 1.9.2.2 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +/**
 + * Thrown when an assertion failed.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_AssertionFailedError extends Exception {
 +    /**
 +     * Wrapper for getMessage() which is declared as final.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function toString() {
 +        return $this->getMessage();
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/ComparisonFailure.php b/buildscripts/PHPUnit2/Framework/ComparisonFailure.php new file mode 100644 index 00000000..cc8e26e6 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/ComparisonFailure.php @@ -0,0 +1,153 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: ComparisonFailure.php,v 1.13.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/Assert.php';
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +
 +/**
 + * Thrown when an assertion for string equality failed.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_ComparisonFailure extends PHPUnit2_Framework_AssertionFailedError {
 +    /**
 +     * @var    string
 +     * @access private
 +     */
 +    private $expected = '';
 +
 +    /**
 +     * @var    string
 +     * @access private
 +     */
 +    private $actual = '';
 +
 +    /**
 +     * Constructs a comparison failure.
 +     *
 +     * @param  string $expected
 +     * @param  string $actual
 +     * @param  string $message
 +     * @access public
 +     */
 +    public function __construct($expected, $actual, $message = '') {
 +        parent::__construct($message);
 +
 +        $this->expected = ($expected === NULL) ? 'NULL' : $expected;
 +        $this->actual   = ($actual   === NULL) ? 'NULL' : $actual;
 +    }
 +
 +    /**
 +     * Returns "..." in place of common prefix and "..." in
 +     * place of common suffix between expected and actual.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function toString() {
 +        $end = min(strlen($this->expected), strlen($this->actual));
 +        $i   = 0;
 +        $j   = strlen($this->expected) - 1;
 +        $k   = strlen($this->actual)   - 1;
 +
 +        for (; $i < $end; $i++) {
 +            if ($this->expected[$i] != $this->actual[$i]) {
 +                break;
 +            }
 +        }
 +
 +        for (; $k >= $i && $j >= $i; $k--,$j--) {
 +            if ($this->expected[$j] != $this->actual[$k]) {
 +                break;
 +            }
 +        }
 +
 +        if ($j < $i && $k < $i) {
 +            $expected = $this->expected;
 +            $actual   = $this->actual;
 +        } else {
 +            $expected = substr($this->expected, $i, ($j + 1 - $i));
 +            $actual   = substr($this->actual,   $i, ($k + 1 - $i));;
 +
 +            if ($i <= $end && $i > 0) {
 +                $expected = '...' . $expected;
 +                $actual   = '...' . $actual;
 +            }
 +      
 +            if ($j < strlen($this->expected) - 1) {
 +                $expected .= '...';
 +            }
 +
 +            if ($k < strlen($this->actual) - 1) {
 +                $actual .= '...';
 +            }
 +        }
 +
 +        return PHPUnit2_Framework_Assert::format(
 +            $expected,
 +            $actual,
 +            parent::getMessage()
 +        );
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/Error.php b/buildscripts/PHPUnit2/Framework/Error.php new file mode 100644 index 00000000..a4bd4fd2 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/Error.php @@ -0,0 +1,88 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: Error.php,v 1.4.2.2 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.2.0
 + */
 +
 +/**
 + * Wrapper for PHP errors.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.2.0
 + */
 +class PHPUnit2_Framework_Error extends Exception {
 +    /**
 +     * Constructor.
 +     *
 +     * @param  string  $message
 +     * @param  integer $code
 +     * @param  string  $file
 +     * @param  integer $line
 +     * @param  array   $trace
 +     * @access public
 +     */
 +    public function __construct($message, $code, $file, $line, $trace) {
 +        parent::__construct($message, $code);
 +
 +        $this->file  = $file;
 +        $this->line  = $line;
 +        $this->trace = $trace;
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/IncompleteTest.php b/buildscripts/PHPUnit2/Framework/IncompleteTest.php new file mode 100644 index 00000000..325e6411 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/IncompleteTest.php @@ -0,0 +1,72 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: IncompleteTest.php,v 1.6.2.2 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +/**
 + * A marker interface for marking any exception/error as result of an unit
 + * test as incomplete implementation or currently not implemented.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Interface available since Release 2.0.0
 + */
 +interface PHPUnit2_Framework_IncompleteTest {
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/IncompleteTestError.php b/buildscripts/PHPUnit2/Framework/IncompleteTestError.php new file mode 100644 index 00000000..6c2a0660 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/IncompleteTestError.php @@ -0,0 +1,75 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: IncompleteTestError.php,v 1.5.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +require_once 'PHPUnit2/Framework/IncompleteTest.php';
 +
 +/**
 + * Extension to PHPUnit2_Framework_AssertionFailedError to mark the special
 + * case of an incomplete test.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_IncompleteTestError extends PHPUnit2_Framework_AssertionFailedError implements PHPUnit2_Framework_IncompleteTest {
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/Test.php b/buildscripts/PHPUnit2/Framework/Test.php new file mode 100644 index 00000000..1d198f1a --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/Test.php @@ -0,0 +1,87 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: Test.php,v 1.12.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +/**
 + * A Test can be run and collect its results.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Interface available since Release 2.0.0
 + */
 +interface PHPUnit2_Framework_Test {
 +    /**
 +     * Counts the number of test cases that will be run by this test.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function countTestCases();
 +
 +    /**
 +     * Runs a test and collects its result in a TestResult instance.
 +     *
 +     * @param  PHPUnit2_Framework_TestResult $result
 +     * @return PHPUnit2_Framework_TestResult
 +     * @access public
 +     */
 +    public function run($result = NULL);
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/TestCase.php b/buildscripts/PHPUnit2/Framework/TestCase.php new file mode 100644 index 00000000..80f56932 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/TestCase.php @@ -0,0 +1,292 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: TestCase.php,v 1.32.2.5 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/Assert.php';
 +require_once 'PHPUnit2/Framework/Error.php';
 +require_once 'PHPUnit2/Framework/Test.php';
 +require_once 'PHPUnit2/Framework/TestResult.php';
 +
 +/**
 + * A TestCase defines the fixture to run multiple tests.
 + *
 + * To define a TestCase
 + *
 + *   1) Implement a subclass of PHPUnit2_Framework_TestCase.
 + *   2) Define instance variables that store the state of the fixture.
 + *   3) Initialize the fixture state by overriding setUp().
 + *   4) Clean-up after a test by overriding tearDown().
 + *
 + * Each test runs in its own fixture so there can be no side effects
 + * among test runs.
 + *
 + * Here is an example:
 + *
 + * <code>
 + * <?php
 + * require_once 'PHPUnit2/Framework/TestCase.php';
 + *
 + * class MathTest extends PHPUnit2_Framework_TestCase {
 + *     public $value1;
 + *     public $value2;
 + *
 + *     public function __construct($name) {
 + *         parent::__construct($name);
 + *     }
 + *
 + *     public function setUp() {
 + *         $this->value1 = 2;
 + *         $this->value2 = 3;
 + *     }
 + * }
 + * ?>
 + * </code>
 + *
 + * For each test implement a method which interacts with the fixture.
 + * Verify the expected results with assertions specified by calling
 + * assert with a boolean.
 + *
 + * <code>
 + * <?php
 + * public function testPass() {
 + *     $this->assertTrue($this->value1 + $this->value2 == 5);
 + * }
 + * ?>
 + * </code>
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + * @abstract
 + */
 +abstract class PHPUnit2_Framework_TestCase extends PHPUnit2_Framework_Assert implements PHPUnit2_Framework_Test {
 +    /**
 +     * The name of the test case.
 +     *
 +     * @var    string
 +     * @access private
 +     */
 +    private $name = NULL;
 +
 +    /**
 +     * Constructs a test case with the given name.
 +     *
 +     * @param  string
 +     * @access public
 +     */
 +    public function __construct($name = NULL) {
 +        if ($name !== NULL) {
 +            $this->setName($name);
 +        }
 +    }
 +
 +    /**
 +     * Returns a string representation of the test case.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function toString() {
 +        $class = new ReflectionClass($this);
 +
 +        return sprintf(
 +          '%s(%s)',
 +
 +          $this->getName(),
 +          $class->name
 +        );
 +    }
 +
 +    /**
 +     * Counts the number of test cases executed by run(TestResult result).
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function countTestCases() {
 +        return 1;
 +    }
 +
 +    /**
 +     * Gets the name of a TestCase.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function getName() {
 +        return $this->name;
 +    }
 +
 +    /**
 +     * Runs the test case and collects the results in a TestResult object.
 +     * If no TestResult object is passed a new one will be created.
 +     *
 +     * @param  PHPUnit2_Framework_TestResult $result
 +     * @return PHPUnit2_Framework_TestResult
 +     * @throws Exception
 +     * @access public
 +     */
 +    public function run($result = NULL) {
 +        if ($result === NULL) {
 +            $result = $this->createResult();
 +        }
 +
 +        // XXX: Workaround for missing ability to declare type-hinted parameters as optional.
 +        else if (!($result instanceof PHPUnit2_Framework_TestResult)) {
 +            throw new Exception(
 +              'Argument 1 must be an instance of PHPUnit2_Framework_TestResult.'
 +            );
 +        }
 +
 +        $result->run($this);
 +
 +        return $result;
 +    }
 +
 +    /**
 +     * Runs the bare test sequence.
 +     *
 +     * @access public
 +     */
 +    public function runBare() {
 +        $catchedException = NULL;
 +
 +        $this->setUp();
 +
 +        try {
 +            $this->runTest();
 +        }
 +
 +        catch (Exception $e) {
 +            $catchedException = $e;
 +        }
 +
 +        $this->tearDown();
 +
 +        // Workaround for missing "finally".
 +        if ($catchedException !== NULL) {
 +            throw $catchedException;
 +        }
 +    }
 +
 +    /**
 +     * Override to run the test and assert its state.
 +     *
 +     * @throws PHPUnit2_Framework_Error
 +     * @access protected
 +     */
 +    protected function runTest() {
 +        if ($this->name === NULL) {
 +            throw new PHPUnit2_Framework_Error(
 +              'PHPUnit2_Framework_TestCase::$name must not be NULL.'
 +            );
 +        }
 +
 +        try {
 +            $class  = new ReflectionClass($this);
 +            $method = $class->getMethod($this->name);
 +        }
 +
 +        catch (ReflectionException $e) {
 +            $this->fail($e->getMessage());
 +        }
 +
 +        $method->invoke($this);
 +    }
 +
 +    /**
 +     * Sets the name of a TestCase.
 +     *
 +     * @param  string
 +     * @access public
 +     */
 +    public function setName($name) {
 +        $this->name = $name;
 +    }
 +
 +    /**
 +     * Creates a default TestResult object.
 +     *
 +     * @return PHPUnit2_Framework_TestResult
 +     * @access protected
 +     */
 +    protected function createResult() {
 +        return new PHPUnit2_Framework_TestResult;
 +    }
 +
 +    /**
 +     * Sets up the fixture, for example, open a network connection.
 +     * This method is called before a test is executed.
 +     *
 +     * @access protected
 +     */
 +    protected function setUp() {
 +    }
 +
 +    /**
 +     * Tears down the fixture, for example, close a network connection.
 +     * This method is called after a test is executed.
 +     *
 +     * @access protected
 +     */
 +    protected function tearDown() {
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/TestFailure.php b/buildscripts/PHPUnit2/Framework/TestFailure.php new file mode 100644 index 00000000..4957e4e6 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/TestFailure.php @@ -0,0 +1,154 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: TestFailure.php,v 1.10.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +require_once 'PHPUnit2/Framework/Test.php';
 +
 +/**
 + * A TestFailure collects a failed test together with the caught exception.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_TestFailure {
 +    /**
 +     * @var    PHPUnit2_Framework_Test
 +     * @access protected
 +     */
 +    protected $failedTest;
 +
 +    /**
 +     * @var    Exception
 +     * @access protected
 +     */
 +    protected $thrownException;
 +
 +    /**
 +     * Constructs a TestFailure with the given test and exception.
 +     *
 +     * @param  PHPUnit2_Framework_Test $failedTest
 +     * @param  Exception               $thrownException
 +     * @access public
 +     */
 +    public function __construct(PHPUnit2_Framework_Test $failedTest, Exception $thrownException) {
 +        $this->failedTest      = $failedTest;
 +        $this->thrownException = $thrownException;
 +    }
 +
 +    /**
 +     * Returns a short description of the failure.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function toString() {
 +        return sprintf(
 +          '%s: %s',
 +
 +          $this->failedTest,
 +          $this->thrownException->getMessage()
 +        );
 +    }
 +
 +    /**
 +     * Gets the failed test.
 +     *
 +     * @return Test
 +     * @access public
 +     */
 +    public function failedTest() {
 +        return $this->failedTest;
 +    }
 +
 +    /**
 +     * Gets the thrown exception.
 +     *
 +     * @return Exception
 +     * @access public
 +     */
 +    public function thrownException() {
 +        return $this->thrownException;
 +    }
 +
 +    /**
 +     * Returns the exception's message.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function exceptionMessage() {
 +        return $this->thrownException()->getMessage();
 +    }
 +
 +    /**
 +     * Returns TRUE if the thrown exception
 +     * is of type AssertionFailedError.
 +     *
 +     * @return boolean
 +     * @access public
 +     */
 +    public function isFailure() {
 +        return ($this->thrownException() instanceof PHPUnit2_Framework_AssertionFailedError);
 +    }
 +}
 +
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/TestListener.php b/buildscripts/PHPUnit2/Framework/TestListener.php new file mode 100644 index 00000000..79f11ffb --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/TestListener.php @@ -0,0 +1,135 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: TestListener.php,v 1.11.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +require_once 'PHPUnit2/Framework/TestSuite.php';
 +
 +/**
 + * A Listener for test progress.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Interface available since Release 2.0.0
 + */
 +interface PHPUnit2_Framework_TestListener {
 +    /**
 +     * An error occurred.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @param  Exception               $e
 +     * @access public
 +     */
 +    public function addError(PHPUnit2_Framework_Test $test, Exception $e);
 +
 +    /**
 +     * A failure occurred.
 +     *
 +     * @param  PHPUnit2_Framework_Test                 $test
 +     * @param  PHPUnit2_Framework_AssertionFailedError $e
 +     * @access public
 +     */
 +    public function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $e);
 +
 +    /**
 +     * Incomplete test.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @param  Exception               $e
 +     * @access public
 +     */
 +    public function addIncompleteTest(PHPUnit2_Framework_Test $test, Exception $e);
 +
 +    /**
 +     * A test suite started.
 +     *
 +     * @param  PHPUnit2_Framework_TestSuite $suite
 +     * @access public
 +     * @since  Method available since Release 2.2.0
 +     */
 +    public function startTestSuite(PHPUnit2_Framework_TestSuite $suite);
 +
 +    /**
 +     * A test suite ended.
 +     *
 +     * @param  PHPUnit2_Framework_TestSuite $suite
 +     * @access public
 +     * @since  Method available since Release 2.2.0
 +     */
 +    public function endTestSuite(PHPUnit2_Framework_TestSuite $suite);
 +
 +    /**
 +     * A test started.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @access public
 +     */
 +    public function startTest(PHPUnit2_Framework_Test $test);
 +
 +    /**
 +     * A test ended.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @access public
 +     */
 +    public function endTest(PHPUnit2_Framework_Test $test);
 +}
 +
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/TestResult.php b/buildscripts/PHPUnit2/Framework/TestResult.php new file mode 100644 index 00000000..17adb529 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/TestResult.php @@ -0,0 +1,447 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: TestResult.php,v 1.32.2.7 2006/02/25 09:44:23 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/AssertionFailedError.php';
 +require_once 'PHPUnit2/Framework/IncompleteTest.php';
 +require_once 'PHPUnit2/Framework/TestFailure.php';
 +require_once 'PHPUnit2/Framework/TestListener.php';
 +require_once 'PHPUnit2/Util/ErrorHandler.php';
 +require_once 'PHPUnit2/Util/Filter.php';
 +
 +/**
 + * A TestResult collects the results of executing a test case.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_TestResult {
 +    /**
 +     * @var    array
 +     * @access protected
 +     */
 +    protected $errors = array();
 +
 +    /**
 +     * @var    array
 +     * @access protected
 +     */
 +    protected $failures = array();
 +
 +    /**
 +     * @var    array
 +     * @access protected
 +     */
 +    protected $notImplemented = array();
 +
 +    /**
 +     * @var    array
 +     * @access protected
 +     */
 +    protected $listeners = array();
 +
 +    /**
 +     * @var    integer
 +     * @access protected
 +     */
 +    protected $runTests = 0;
 +
 +    /**
 +     * Code Coverage information provided by Xdebug.
 +     *
 +     * @var    array
 +     * @access protected
 +     */
 +    protected $codeCoverageInformation = array();
 +
 +    /**
 +     * @var    boolean
 +     * @access protected
 +     */
 +    protected $collectCodeCoverageInformation = FALSE;
 +
 +    /**
 +     * @var    boolean
 +     * @access private
 +     */
 +    private $stop = FALSE;
 +
 +    /**
 +     * Registers a TestListener.
 +     *
 +     * @param  PHPUnit2_Framework_TestListener
 +     * @access public
 +     */
 +    public function addListener(PHPUnit2_Framework_TestListener $listener) {
 +        $this->listeners[] = $listener;
 +    }
 +
 +    /**
 +     * Unregisters a TestListener.
 +     *
 +     * @param  PHPUnit2_Framework_TestListener $listener
 +     * @access public
 +     */
 +    public function removeListener(PHPUnit2_Framework_TestListener $listener) {
 +        for ($i = 0; $i < sizeof($this->listeners); $i++) {
 +            if ($this->listeners[$i] === $listener) {
 +                unset($this->listeners[$i]);
 +            }
 +        }
 +    }
 +
 +    /**
 +     * Adds an error to the list of errors.
 +     * The passed in exception caused the error.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @param  Exception               $e
 +     * @access public
 +     */
 +    public function addError(PHPUnit2_Framework_Test $test, Exception $e) {
 +        if ($e instanceof PHPUnit2_Framework_IncompleteTest) {
 +            $this->notImplemented[] = new PHPUnit2_Framework_TestFailure($test, $e);
 +
 +            foreach ($this->listeners as $listener) {
 +                $listener->addIncompleteTest($test, $e);
 +            }
 +        } else {
 +            $this->errors[] = new PHPUnit2_Framework_TestFailure($test, $e);
 +
 +            foreach ($this->listeners as $listener) {
 +                $listener->addError($test, $e);
 +            }
 +        }
 +    }
 +
 +    /**
 +     * Adds a failure to the list of failures.
 +     * The passed in exception caused the failure.
 +     *
 +     * @param  PHPUnit2_Framework_Test                  $test
 +     * @param  PHPUnit2_Framework_AssertionFailedError  $e
 +     * @access public
 +     */
 +    public function addFailure(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_AssertionFailedError $e) {
 +        if ($e instanceof PHPUnit2_Framework_IncompleteTest) {
 +            $this->notImplemented[] = new PHPUnit2_Framework_TestFailure($test, $e);
 +
 +            foreach ($this->listeners as $listener) {
 +                $listener->addIncompleteTest($test, $e);
 +            }
 +        } else {
 +            $this->failures[] = new PHPUnit2_Framework_TestFailure($test, $e);
 +
 +            foreach ($this->listeners as $listener) {
 +                $listener->addFailure($test, $e);
 +            }
 +        }
 +    }
 +
 +    /**
 +     * Informs the result that a testsuite will be started.
 +     *
 +     * @param  PHPUnit2_Framework_TestSuite $suite
 +     * @access public
 +     * @since  Method available since Release 2.2.0
 +     */
 +    public function startTestSuite(PHPUnit2_Framework_TestSuite $suite) {
 +        foreach ($this->listeners as $listener) {
 +            $listener->startTestSuite($suite);
 +        }
 +    }
 +
 +    /**
 +     * Informs the result that a testsuite was completed.
 +     *
 +     * @param  PHPUnit2_Framework_TestSuite $suite
 +     * @access public
 +     * @since  Method available since Release 2.2.0
 +     */
 +    public function endTestSuite(PHPUnit2_Framework_TestSuite $suite) {
 +        foreach ($this->listeners as $listener) {
 +            $listener->endTestSuite($suite);
 +        }
 +    }
 +
 +    /**
 +     * Informs the result that a test will be started.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @access public
 +     */
 +    public function startTest(PHPUnit2_Framework_Test $test) {
 +        $this->runTests += $test->countTestCases();
 +
 +        foreach ($this->listeners as $listener) {
 +            $listener->startTest($test);
 +        }
 +    }
 +
 +    /**
 +     * Informs the result that a test was completed.
 +     *
 +     * @param  PHPUnit2_Framework_Test
 +     * @access public
 +     */
 +    public function endTest(PHPUnit2_Framework_Test $test) {
 +        foreach ($this->listeners as $listener) {
 +            $listener->endTest($test);
 +        }
 +    }
 +
 +    /**
 +     * Returns TRUE if no incomplete test occured.
 +     *
 +     * @return boolean
 +     * @access public
 +     */
 +    public function allCompletlyImplemented() {
 +        return $this->notImplementedCount() == 0;
 +    }
 +
 +    /**
 +     * Gets the number of incomplete tests.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function notImplementedCount() {
 +        return sizeof($this->notImplemented);
 +    }
 +
 +    /**
 +     * Returns an Enumeration for the incomplete tests.
 +     *
 +     * @return array
 +     * @access public
 +     */
 +    public function notImplemented() {
 +        return $this->notImplemented;
 +    }
 +
 +    /**
 +     * Gets the number of detected errors.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function errorCount() {
 +        return sizeof($this->errors);
 +    }
 +
 +    /**
 +     * Returns an Enumeration for the errors.
 +     *
 +     * @return array
 +     * @access public
 +     */
 +    public function errors() {
 +        return $this->errors;
 +    }
 +
 +    /**
 +     * Gets the number of detected failures.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function failureCount() {
 +        return sizeof($this->failures);
 +    }
 +
 +    /**
 +     * Returns an Enumeration for the failures.
 +     *
 +     * @return array
 +     * @access public
 +     */
 +    public function failures() {
 +        return $this->failures;
 +    }
 +
 +    /**
 +     * Enables or disables the collection of Code Coverage information.
 +     *
 +     * @param  boolean $flag
 +     * @throws Exception
 +     * @access public
 +     * @since  Method available since Release 2.3.0
 +     */
 +    public function collectCodeCoverageInformation($flag) {
 +        if (is_bool($flag)) {
 +            $this->collectCodeCoverageInformation = $flag;
 +        } else {
 +            throw new Exception;
 +        }
 +    }
 +
 +    /**
 +     * Returns Code Coverage data per test case.
 +     *
 +     * Format of the result array:
 +     *
 +     * <code>
 +     * array(
 +     *   "testCase" => array(
 +     *     "/tested/code.php" => array(
 +     *       linenumber => flag
 +     *     )
 +     *   )
 +     * )
 +     * </code>
 +     *
 +     * flag < 0: Line is executable but was not executed.
 +     * flag > 0: Line was executed.
 +     *
 +     * @return array
 +     * @access public
 +     */
 +    public function getCodeCoverageInformation() {
 +        return $this->codeCoverageInformation;
 +    }
 +
 +    /**
 +     * Runs a TestCase.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @access public
 +     */
 +    public function run(PHPUnit2_Framework_Test $test) {
 +        $this->startTest($test);
 +
 +        set_error_handler('PHPUnit2_Util_ErrorHandler', E_USER_ERROR);
 +
 +        $useXdebug = (extension_loaded('xdebug') && $this->collectCodeCoverageInformation);
 +
 +        if ($useXdebug) {
 +            xdebug_start_code_coverage(XDEBUG_CC_UNUSED);
 +        }
 +
 +        $globalsBackup = $GLOBALS;
 +
 +        try {
 +            $test->runBare();
 +        }
 +
 +        catch (PHPUnit2_Framework_AssertionFailedError $e) {
 +            $this->addFailure($test, $e);
 +        }
 +
 +        catch (Exception $e) {
 +            $this->addError($test, $e);
 +        }
 +
 +        $GLOBALS = $globalsBackup;
 +
 +        if ($useXdebug) {
 +            $this->codeCoverageInformation[$test->getName()] = PHPUnit2_Util_Filter::getFilteredCodeCoverage(
 +              xdebug_get_code_coverage()
 +            );
 +
 +            xdebug_stop_code_coverage();
 +        }
 +
 +        restore_error_handler();
 +
 +        $this->endTest($test);
 +    }
 +
 +    /**
 +     * Gets the number of run tests.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function runCount() {
 +        return $this->runTests;
 +    }
 +
 +    /**
 +     * Checks whether the test run should stop.
 +     *
 +     * @return boolean
 +     * @access public
 +     */
 +    public function shouldStop() {
 +        return $this->stop;
 +    }
 +
 +    /**
 +     * Marks that the test run should stop.
 +     *
 +     * @access public
 +     */
 +    public function stop() {
 +        $this->stop = TRUE;
 +    }
 +
 +    /**
 +     * Returns whether the entire test was successful or not.
 +     *
 +     * @return boolean
 +     * @access public
 +     */
 +    public function wasSuccessful() {
 +        return empty($this->errors) && empty($this->failures);
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/TestSuite.php b/buildscripts/PHPUnit2/Framework/TestSuite.php new file mode 100644 index 00000000..3d5d670e --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/TestSuite.php @@ -0,0 +1,554 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: TestSuite.php,v 1.26.2.11 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/Test.php';
 +require_once 'PHPUnit2/Framework/TestCase.php';
 +require_once 'PHPUnit2/Framework/TestResult.php';
 +require_once 'PHPUnit2/Runner/BaseTestRunner.php';
 +require_once 'PHPUnit2/Util/Fileloader.php';
 +
 +/**
 + * A TestSuite is a composite of Tests. It runs a collection of test cases.
 + *
 + * Here is an example using the dynamic test definition.
 + *
 + * <code>
 + * <?php
 + * $suite = new PHPUnit2_Framework_TestSuite;
 + * $suite->addTest(new MathTest('testPass'));
 + * ?>
 + * </code>
 + *
 + * Alternatively, a TestSuite can extract the tests to be run automatically.
 + * To do so you pass a ReflectionClass instance for your
 + * PHPUnit2_Framework_TestCase class to the PHPUnit2_Framework_TestSuite
 + * constructor.
 + *
 + * <code>
 + * <?php
 + * $suite = new PHPUnit2_Framework_TestSuite(
 + *   new ReflectionClass('MathTest')
 + * );
 + * ?>
 + * </code>
 + *
 + * This constructor creates a suite with all the methods starting with
 + * "test" that take no arguments.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_TestSuite implements PHPUnit2_Framework_Test {
 +    /**
 +     * The name of the test suite.
 +     *
 +     * @var    string
 +     * @access private
 +     */
 +    private $name = '';
 +
 +    /**
 +     * The tests in the test suite.
 +     *
 +     * @var    array
 +     * @access private
 +     */
 +    private $tests = array();
 +
 +    /**
 +     * Constructs a new TestSuite:
 +     *
 +     *   - PHPUnit2_Framework_TestSuite() constructs an empty TestSuite.
 +     *
 +     *   - PHPUnit2_Framework_TestSuite(ReflectionClass) constructs a
 +     *     TestSuite from the given class.
 +     *
 +     *   - PHPUnit2_Framework_TestSuite(ReflectionClass, String)
 +     *     constructs a TestSuite from the given class with the given
 +     *     name.
 +     *
 +     *   - PHPUnit2_Framework_TestSuite(String) either constructs a
 +     *     TestSuite from the given class (if the passed string is the
 +     *     name of an existing class) or constructs an empty TestSuite
 +     *     with the given name.
 +     *
 +     * @param  mixed  $theClass
 +     * @param  string $name
 +     * @throws Exception
 +     * @access public
 +     */
 +    public function __construct($theClass = '', $name = '') {
 +        $argumentsValid = FALSE;
 +
 +        if (is_object($theClass) &&
 +            $theClass instanceof ReflectionClass) {
 +            $argumentsValid = TRUE;
 +        }
 +
 +        else if (is_string($theClass) && $theClass !== '' && class_exists($theClass)) {
 +            $argumentsValid = TRUE;
 +
 +            if ($name == '') {
 +                $name = $theClass;
 +            }
 +
 +            $theClass = new ReflectionClass($theClass);
 +        }
 +
 +        else if (is_string($theClass)) {
 +            $this->setName($theClass);
 +            return;
 +        }
 +
 +        if (!$argumentsValid) {
 +            throw new Exception;
 +        }
 +
 +        if ($name != '') {
 +            $this->setName($name);
 +        } else {
 +            $this->setName($theClass->getName());
 +        }
 +
 +        $constructor = $theClass->getConstructor();
 +
 +        if ($constructor === NULL ||
 +            !$constructor->isPublic()) {
 +            $this->addTest(
 +              self::warning(
 +                sprintf(
 +                  'Class %s has no public constructor',
 +
 +                  $theClass->getName()
 +                )
 +              )
 +            );
 +
 +            return;
 +        }
 +
 +        $methods = $theClass->getMethods();
 +        $names   = array();
 +
 +        foreach ($methods as $method) {
 +            $this->addTestMethod($method, $names, $theClass);
 +        }
 +
 +        if (empty($this->tests)) {
 +            $this->addTest(
 +              self::warning(
 +                sprintf(
 +                  'No tests found in %s',
 +
 +                  $theClass->getName()
 +                )
 +              )
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Returns a string representation of the test suite.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function toString() {
 +        return $this->getName();
 +    }
 +
 +    /**
 +     * Adds a test to the suite.
 +     *
 +     * @param  PHPUnit2_Framework_Test $test
 +     * @access public
 +     */
 +    public function addTest(PHPUnit2_Framework_Test $test) {
 +        $this->tests[] = $test;
 +    }
 +
 +    /**
 +     * Adds the tests from the given class to the suite.
 +     *
 +     * @param  mixed $testClass
 +     * @access public
 +     */
 +    public function addTestSuite($testClass) {
 +        if (is_string($testClass) &&
 +            class_exists($testClass)) {
 +            $testClass = new ReflectionClass($testClass);
 +        }
 +
 +        if (is_object($testClass) &&
 +            $testClass instanceof ReflectionClass) {
 +            $this->addTest(new PHPUnit2_Framework_TestSuite($testClass));
 +        }
 +    }
 +
 +    /**
 +     * Wraps both <code>addTest()</code> and <code>addTestSuite</code>
 +     * as well as the separate import statements for the user's convenience.
 +     *
 +     * If the named file cannot be read or there are no new tests that can be
 +     * added, a <code>PHPUnit2_Framework_Warning</code> will be created instead,
 +     * leaving the current test run untouched.
 +     *
 +     * @param  string $filename
 +     * @throws Exception
 +     * @access public
 +     * @since  Method available since Release 2.3.0
 +     * @author Stefano F. Rausch <stefano@rausch-e.net>
 +     */
 +    public function addTestFile($filename) {
 +        if (!is_string($filename) || !file_exists($filename)) {
 +            throw new Exception;
 +        }
 +
 +        $declaredClasses = get_declared_classes();
 +
 +        PHPUnit2_Util_Fileloader::checkAndLoad($filename);
 +
 +        $newClasses = array_values(
 +          array_diff(get_declared_classes(), $declaredClasses)
 +        );
 +
 +        $testsFound = 0;
 +
 +        foreach ($newClasses as $class) {
 +            if (preg_match('"Tests?$"', $class)) {
 +                try {
 +                    $suiteMethod = new ReflectionMethod(
 +                      $class, PHPUnit2_Runner_BaseTestRunner::SUITE_METHODNAME
 +                    );
 +
 +                    $this->addTest($suiteMethod->invoke(NULL));
 +                } catch (ReflectionException $e) {
 +                    $this->addTestSuite(new ReflectionClass($class));
 +                }
 +
 +                $testsFound++;
 +            }
 +        }
 +
 +        if ($testsFound == 0) {
 +            $this->addTest(
 +              new PHPUnit2_Framework_Warning('No tests found in file ' . $filename)
 +            );
 +        }
 +    }
 +
 +    /**
 +     * Wrapper for addTestFile() that adds multiple test files.
 +     *
 +     * @param  Array $filenames
 +     * @throws Exception
 +     * @access public
 +     * @since  Method available since Release 2.3.0
 +     */
 +    public function addTestFiles($filenames) {
 +        foreach ($filenames as $filename) {
 +            $this->addTestFile($filename);
 +        }
 +    }
 +
 +    /**
 +     * Counts the number of test cases that will be run by this test.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function countTestCases() {
 +        $count = 0;
 +
 +        foreach ($this->tests as $test) {
 +            $count += $test->countTestCases();
 +        }
 +
 +        return $count;
 +    }
 +
 +    /**
 +     * @param  ReflectionClass $theClass
 +     * @param  string          $name
 +     * @return PHPUnit2_Framework_Test
 +     * @access public
 +     * @static
 +     */
 +    public static function createTest(ReflectionClass $theClass, $name) {
 +        if (!$theClass->isInstantiable()) {
 +            return self::warning(
 +              sprintf(
 +                'Cannot instantiate test case %s.',
 +                $theClass->getName()
 +              )
 +            );
 +        }
 +
 +        $constructor = $theClass->getConstructor();
 +
 +        if ($constructor !== NULL) {
 +            $parameters = $constructor->getParameters();
 +
 +            if (sizeof($parameters) == 0) {
 +                $test = $theClass->newInstance();
 +
 +                if ($test instanceof PHPUnit2_Framework_TestCase) {
 +                    $test->setName($name);
 +                }
 +            }
 +
 +            else if (sizeof($parameters) == 1 &&
 +                     $parameters[0]->getClass() === NULL) {
 +                $test = $theClass->newInstance($name);
 +            }
 +
 +            else {
 +                return self::warning(
 +                  sprintf(
 +                    'Constructor of class %s is not TestCase($name) or TestCase().',
 +                    $theClass->getName()
 +                  )
 +                );
 +            }
 +        }
 +
 +        return $test;
 +    }
 +
 +    /**
 +     * Creates a default TestResult object.
 +     *
 +     * @return PHPUnit2_Framework_TestResult
 +     * @access protected
 +     */
 +    protected function createResult() {
 +        return new PHPUnit2_Framework_TestResult;
 +    }
 +
 +    /**
 +     * Returns the name of the suite.
 +     *
 +     * @return string
 +     * @access public
 +     */
 +    public function getName() {
 +        return $this->name;
 +    }
 +
 +    /**
 +     * Runs the tests and collects their result in a TestResult.
 +     *
 +     * @param  PHPUnit2_Framework_TestResult $result
 +     * @return PHPUnit2_Framework_TestResult
 +     * @throws Exception
 +     * @access public
 +     */
 +    public function run($result = NULL) {
 +        if ($result === NULL) {
 +            $result = $this->createResult();
 +        }
 +
 +        // XXX: Workaround for missing ability to declare type-hinted parameters as optional.
 +        else if (!($result instanceof PHPUnit2_Framework_TestResult)) {
 +            throw new Exception(
 +              'Argument 1 must be an instance of PHPUnit2_Framework_TestResult.'
 +            );
 +        }
 +
 +        $result->startTestSuite($this);
 +
 +        foreach ($this->tests as $test) {
 +            if ($result->shouldStop()) {
 +                break;
 +            }
 +
 +            $this->runTest($test, $result);
 +        }
 +
 +        $result->endTestSuite($this);
 +
 +        return $result;
 +    }
 +
 +    /**
 +     * Runs a test.
 +     *
 +     * @param  PHPUnit2_Framework_Test        $test
 +     * @param  PHPUnit2_Framework_TestResult  $testResult
 +     * @access public
 +     */
 +    public function runTest(PHPUnit2_Framework_Test $test, PHPUnit2_Framework_TestResult $result) {
 +        $test->run($result);
 +    }
 +
 +    /**
 +     * Sets the name of the suite.
 +     *
 +     * @param  string
 +     * @access public
 +     */
 +    public function setName($name) {
 +        $this->name = $name;
 +    }
 +
 +    /**
 +     * Returns the test at the given index.
 +     *
 +     * @param  integer
 +     * @return PHPUnit2_Framework_Test
 +     * @access public
 +     */
 +    public function testAt($index) {
 +        if (isset($this->tests[$index])) {
 +            return $this->tests[$index];
 +        } else {
 +            return FALSE;
 +        }
 +    }
 +
 +    /**
 +     * Returns the number of tests in this suite.
 +     *
 +     * @return integer
 +     * @access public
 +     */
 +    public function testCount() {
 +        return sizeof($this->tests);
 +    }
 +
 +    /**
 +     * Returns the tests as an enumeration.
 +     *
 +     * @return array
 +     * @access public
 +     */
 +    public function tests() {
 +        return $this->tests;
 +    }
 +
 +    /**
 +     * @param  ReflectionMethod $method
 +     * @param  array            $names
 +     * @param  ReflectionClass  $theClass
 +     * @access private
 +     */
 +    private function addTestMethod(ReflectionMethod $method, &$names, ReflectionClass $theClass) {
 +        $name = $method->getName();
 +
 +        if (in_array($name, $names)) {
 +            return;
 +        }
 +
 +        if ($this->isPublicTestMethod($method)) {
 +            $names[] = $name;
 +
 +            $this->addTest(
 +              self::createTest(
 +                $theClass,
 +                $name
 +              )
 +            );
 +        }
 +
 +        else if ($this->isTestMethod($method)) {
 +            $this->addTest(
 +              self::warning(
 +                sprintf(
 +                  'Test method is not public: %s',
 +
 +                  $name
 +                )
 +              )
 +            );
 +        }
 +    }
 +
 +    /**
 +     * @param  ReflectionMethod $method
 +     * @return boolean
 +     * @access private
 +     */
 +    private function isPublicTestMethod(ReflectionMethod $method) {
 +        return ($this->isTestMethod($method) &&
 +                $method->isPublic());
 +    }
 +
 +    /**
 +     * @param  ReflectionMethod $method
 +     * @return boolean
 +     * @access private
 +     */
 +    private function isTestMethod(ReflectionMethod $method) {
 +        return (substr($method->name, 0, 4) == 'test');
 +    }
 +
 +    /**
 +     * @param  string  $message
 +     * @return PHPUnit2_Framework_Warning
 +     * @access private
 +     */
 +    private static function warning($message) {
 +        require_once 'PHPUnit2/Framework/Warning.php';
 +        return new PHPUnit2_Framework_Warning($message);
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
 diff --git a/buildscripts/PHPUnit2/Framework/Warning.php b/buildscripts/PHPUnit2/Framework/Warning.php new file mode 100644 index 00000000..0ae885a4 --- /dev/null +++ b/buildscripts/PHPUnit2/Framework/Warning.php @@ -0,0 +1,94 @@ +<?php
 +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
 +
 +/**
 + * PHP Version 5
 + *
 + * Copyright (c) 2002-2006, Sebastian Bergmann <sb@sebastian-bergmann.de>.
 + * All rights reserved.
 + *
 + * Redistribution and use in source and binary forms, with or without
 + * modification, are permitted provided that the following conditions
 + * are met:
 + *
 + *   * Redistributions of source code must retain the above copyright
 + *     notice, this list of conditions and the following disclaimer.
 + * 
 + *   * Redistributions in binary form must reproduce the above copyright
 + *     notice, this list of conditions and the following disclaimer in
 + *     the documentation and/or other materials provided with the
 + *     distribution.
 + *
 + *   * Neither the name of Sebastian Bergmann nor the names of his
 + *     contributors may be used to endorse or promote products derived
 + *     from this software without specific prior written permission.
 + *
 + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
 + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
 + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 + * POSSIBILITY OF SUCH DAMAGE.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    CVS: $Id: Warning.php,v 1.11.2.3 2005/12/17 16:04:56 sebastian Exp $
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      File available since Release 2.0.0
 + */
 +
 +require_once 'PHPUnit2/Framework/TestCase.php';
 +
 +/**
 + * A warning.
 + *
 + * @category   Testing
 + * @package    PHPUnit2
 + * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @copyright  2002-2006 Sebastian Bergmann <sb@sebastian-bergmann.de>
 + * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
 + * @version    Release: @package_version@
 + * @link       http://pear.php.net/package/PHPUnit2
 + * @since      Class available since Release 2.0.0
 + */
 +class PHPUnit2_Framework_Warning extends PHPUnit2_Framework_TestCase {
 +    /**
 +     * @var    string
 +     * @access private
 +     */
 +    private $message = '';
 +
 +    /**
 +     * @param  string  $message
 +     * @access public
 +     */
 +    public function __construct($message = '') {
 +        $this->message = $message;
 +        parent::__construct('Warning');
 +    }
 +
 +    /**
 +     * @access protected
 +     */
 +    protected function runTest() {
 +        $this->fail($this->message);
 +    }
 +}
 +
 +/*
 + * Local variables:
 + * tab-width: 4
 + * c-basic-offset: 4
 + * c-hanging-comment-ender-p: nil
 + * End:
 + */
 +?>
  | 
