[ Index ]
 

Code source de LifeType 1.2.4

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/class/test/PHPUnit/ -> TestSuite.php (source)

   1  <?php
   2  /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
   3  
   4  /**
   5   * PHP Version 4
   6   *
   7   * Copyright (c) 2002-2005, Sebastian Bergmann <sb@sebastian-bergmann.de>.
   8   * All rights reserved.
   9   *
  10   * Redistribution and use in source and binary forms, with or without
  11   * modification, are permitted provided that the following conditions
  12   * are met:
  13   *
  14   *   * Redistributions of source code must retain the above copyright
  15   *     notice, this list of conditions and the following disclaimer.
  16   * 
  17   *   * Redistributions in binary form must reproduce the above copyright
  18   *     notice, this list of conditions and the following disclaimer in
  19   *     the documentation and/or other materials provided with the
  20   *     distribution.
  21   *
  22   *   * Neither the name of Sebastian Bergmann nor the names of his
  23   *     contributors may be used to endorse or promote products derived
  24   *     from this software without specific prior written permission.
  25   *
  26   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  27   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  28   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  29   * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  30   * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  31   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  32   * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  33   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  34   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRIC
  35   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  36   * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  37   * POSSIBILITY OF SUCH DAMAGE.
  38   *
  39   * @category   Testing
  40   * @package    PHPUnit
  41   * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
  42   * @copyright  2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de>
  43   * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
  44   * @version    CVS: $Id: TestSuite.php,v 1.17 2005/11/10 09:47:15 sebastian Exp $
  45   * @link       http://pear.php.net/package/PHPUnit
  46   * @since      File available since Release 1.0.0
  47   */
  48  
  49  lt_include(PHPUNIT_CLASS_PATH.'PHPUnit/TestCase.php');
  50  
  51  /**
  52   * A TestSuite is a Composite of Tests. It runs a collection of test cases.
  53   *
  54   * Here is an example using the dynamic test definition.
  55   *
  56   * <code>
  57   * <?php
  58   * $suite = new PHPUnit_TestSuite();
  59   * $suite->addTest(new MathTest('testPass'));
  60   * ?>
  61   * </code>
  62   *
  63   * Alternatively, a TestSuite can extract the tests to be run automatically.
  64   * To do so you pass the classname of your TestCase class to the TestSuite
  65   * constructor.
  66   *
  67   * <code>
  68   * <?php
  69   * $suite = new TestSuite('classname');
  70   * ?>
  71   * </code>
  72   *
  73   * This constructor creates a suite with all the methods starting with
  74   * "test" that take no arguments.
  75   *
  76   * @category   Testing
  77   * @package    PHPUnit
  78   * @author     Sebastian Bergmann <sb@sebastian-bergmann.de>
  79   * @copyright  2002-2005 Sebastian Bergmann <sb@sebastian-bergmann.de>
  80   * @license    http://www.opensource.org/licenses/bsd-license.php  BSD License
  81   * @version    Release: @package_version@
  82   * @link       http://pear.php.net/package/PHPUnit
  83   * @since      Class available since Release 1.0.0
  84   */
  85  class PHPUnit_TestSuite {
  86      /**
  87       * The name of the test suite.
  88       *
  89       * @var    string
  90       * @access private
  91       */
  92      var $_name = '';
  93  
  94      /**
  95       * The tests in the test suite.
  96       *
  97       * @var    array
  98       * @access private
  99       */
 100      var $_tests = array();
 101  
 102      /**
 103       * Constructs a TestSuite.
 104       *
 105       * @param  mixed
 106       * @access public
 107       */
 108      function PHPUnit_TestSuite($test = FALSE) {
 109          if ($test !== FALSE) {
 110              $this->setName($test);
 111              $this->addTestSuite($test);
 112          }
 113      }
 114  
 115      /**
 116       * Adds a test to the suite.
 117       *
 118       * @param  object
 119       * @access public
 120       */
 121      function addTest(&$test) {
 122          $this->_tests[] = &$test;
 123      }
 124  
 125      /**
 126       * Adds the tests from the given class to the suite.
 127       *
 128       * @param  string
 129       * @access public
 130       */
 131      function addTestSuite($testClass) {        
 132          if (class_exists($testClass)) {
 133              $methods       = get_class_methods($testClass);
 134              $parentClasses = array(strtolower($testClass));
 135              $parentClass   = $testClass;
 136  
 137              while(is_string($parentClass = get_parent_class($parentClass))) {
 138                  $parentClasses[] = $parentClass;
 139              }
 140  
 141              foreach ($methods as $method) {
 142                  if (substr($method, 0, 4) == 'test' &&
 143                      !in_array($method, $parentClasses)) {
 144                      $this->addTest(new $testClass($method));
 145                  }
 146              }
 147          }
 148      }
 149  
 150      /**
 151       * Counts the number of test cases that will be run by this test.
 152       *
 153       * @return integer
 154       * @access public
 155       */
 156      function countTestCases() {
 157          $count = 0;
 158  
 159          foreach ($this->_tests as $test) {
 160              $count += $test->countTestCases();
 161          }
 162  
 163          return $count;
 164      }
 165  
 166      /**
 167       * Returns the name of the suite.
 168       *
 169       * @return string
 170       * @access public
 171       */
 172      function getName() {
 173          return $this->_name;
 174      }
 175  
 176      /**
 177       * Runs the tests and collects their result in a TestResult.
 178       *
 179       * @param  object
 180       * @access public
 181       */
 182      function run(&$result) {
 183          for ($i = 0; $i < sizeof($this->_tests) && !$result->shouldStop(); $i++) {
 184              $this->_tests[$i]->run($result);
 185          }
 186      }
 187  
 188      /**
 189       * Runs a test.
 190       *
 191       * @param  object
 192       * @param  object
 193       * @access public
 194       */
 195      function runTest(&$test, &$result) {
 196          $test->run($result);
 197      }
 198  
 199      /**
 200       * Sets the name of the suite.
 201       *
 202       * @param  string
 203       * @access public
 204       */
 205      function setName($name) {
 206          $this->_name = $name;
 207      }
 208  
 209      /**
 210       * Returns the test at the given index.
 211       *
 212       * @param  integer
 213       * @return object
 214       * @access public
 215       */
 216      function &testAt($index) {
 217          if (isset($this->_tests[$index])) {
 218              return $this->_tests[$index];
 219          } else {
 220              return FALSE;
 221          }
 222      }
 223  
 224      /**
 225       * Returns the number of tests in this suite.
 226       *
 227       * @return integer
 228       * @access public
 229       */
 230      function testCount() {
 231          return sizeof($this->_tests);
 232      }
 233  
 234      /**
 235       * Returns the tests as an enumeration.
 236       *
 237       * @return array
 238       * @access public
 239       */
 240      function &tests() {
 241          return $this->_tests;
 242      }
 243  
 244      /**
 245       * Returns a string representation of the test suite.
 246       *
 247       * @return string
 248       * @access public
 249       */
 250      function toString() {
 251          return '';
 252      }
 253  }
 254  
 255  /*
 256   * Local variables:
 257   * tab-width: 4
 258   * c-basic-offset: 4
 259   * c-hanging-comment-ender-p: nil
 260   * End:
 261   */
 262  ?>


Généré le : Mon Nov 26 21:04:15 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics