Moodle  2.2.1
http://www.collinsharper.com
C:/xampp/htdocs/moodle/lib/simpletestlib/simpletest.php
Go to the documentation of this file.
00001 <?php
00012 if (version_compare(phpversion(), '5') >= 0) {
00013     require_once(dirname(__FILE__) . '/reflection_php5.php');
00014 } else {
00015     require_once(dirname(__FILE__) . '/reflection_php4.php');
00016 }
00017 require_once(dirname(__FILE__) . '/default_reporter.php');
00018 require_once(dirname(__FILE__) . '/compatibility.php');
00027 class SimpleTest {
00028 
00035     function getVersion() {
00036         $content = file(dirname(__FILE__) . '/VERSION');
00037         return trim($content[0]);
00038     }
00039 
00049     function ignore($class) {
00050         $registry = &SimpleTest::_getRegistry();
00051         $registry['IgnoreList'][strtolower($class)] = true;
00052     }
00053 
00069     function ignoreParentsIfIgnored($classes) {
00070         $registry = &SimpleTest::_getRegistry();
00071         foreach ($classes as $class) {
00072             if (SimpleTest::isIgnored($class)) {
00073                 $reflection = new SimpleReflection($class);
00074                 if ($parent = $reflection->getParent()) {
00075                     SimpleTest::ignore($parent);
00076                 }
00077             }
00078         }
00079     }
00080 
00090     function prefer(&$object) {
00091         $registry = &SimpleTest::_getRegistry();
00092         $registry['Preferred'][] = &$object;
00093     }
00094 
00105     function &preferred($classes) {
00106         if (! is_array($classes)) {
00107             $classes = array($classes);
00108         }
00109         $registry = &SimpleTest::_getRegistry();
00110         for ($i = count($registry['Preferred']) - 1; $i >= 0; $i--) {
00111             foreach ($classes as $class) {
00112                 if (SimpleTestCompatibility::isA($registry['Preferred'][$i], $class)) {
00113                     return $registry['Preferred'][$i];
00114                 }
00115             }
00116         }
00117         return null;
00118     }
00119 
00131     function isIgnored($class) {
00132         $registry = &SimpleTest::_getRegistry();
00133         return isset($registry['IgnoreList'][strtolower($class)]);
00134     }
00135 
00139     function setMockBaseClass($mock_base) {
00140         $registry = &SimpleTest::_getRegistry();
00141         $registry['MockBaseClass'] = $mock_base;
00142     }
00143 
00147     function getMockBaseClass() {
00148         $registry = &SimpleTest::_getRegistry();
00149         return $registry['MockBaseClass'];
00150     }
00151 
00162     function useProxy($proxy, $username = false, $password = false) {
00163         $registry = &SimpleTest::_getRegistry();
00164         $registry['DefaultProxy'] = $proxy;
00165         $registry['DefaultProxyUsername'] = $username;
00166         $registry['DefaultProxyPassword'] = $password;
00167     }
00168 
00174     function getDefaultProxy() {
00175         $registry = &SimpleTest::_getRegistry();
00176         return $registry['DefaultProxy'];
00177     }
00178 
00184     function getDefaultProxyUsername() {
00185         $registry = &SimpleTest::_getRegistry();
00186         return $registry['DefaultProxyUsername'];
00187     }
00188 
00194     function getDefaultProxyPassword() {
00195         $registry = &SimpleTest::_getRegistry();
00196         return $registry['DefaultProxyPassword'];
00197     }
00198 
00205     function &_getRegistry() {
00206         static $registry = false;
00207         if (! $registry) {
00208             $registry = SimpleTest::_getDefaults();
00209         }
00210         return $registry;
00211     }
00212 
00220     function &getContext() {
00221         static $context = false;
00222         if (! $context) {
00223             $context = new SimpleTestContext();
00224         }
00225         return $context;
00226     }
00227 
00234     function _getDefaults() {
00235         return array(
00236                 'StubBaseClass' => 'SimpleStub',
00237                 'MockBaseClass' => 'SimpleMock',
00238                 'IgnoreList' => array(),
00239                 'DefaultProxy' => false,
00240                 'DefaultProxyUsername' => false,
00241                 'DefaultProxyPassword' => false,
00242                 'Preferred' => array(new HtmlReporter(), new TextReporter(), new XmlReporter()));
00243     }
00244 }
00245 
00254 class SimpleTestContext {
00255     var $_test;
00256     var $_reporter;
00257     var $_resources;
00258 
00263     function clear() {
00264         $this->_resources = array();
00265     }
00266 
00274     function setTest(&$test) {
00275         $this->clear();
00276         $this->_test = &$test;
00277     }
00278 
00279 //moodlefix begins
00286     function unsetTest() {
00287         $this->clear();
00288         $this->_test = NULL;
00289     }
00290 
00291 //moodlefix ends
00297     function &getTest() {
00298         return $this->_test;
00299     }
00300 
00308     function setReporter(&$reporter) {
00309         $this->clear();
00310         $this->_reporter = &$reporter;
00311     }
00312 
00318     function &getReporter() {
00319         return $this->_reporter;
00320     }
00321 
00328     function &get($resource) {
00329         if (! isset($this->_resources[$resource])) {
00330             $this->_resources[$resource] = new $resource();
00331         }
00332         return $this->_resources[$resource];
00333     }
00334 }
00335 
00342 class SimpleStackTrace {
00343     var $_prefixes;
00344 
00350     function SimpleStackTrace($prefixes) {
00351         $this->_prefixes = $prefixes;
00352     }
00353 
00362     function traceMethod($stack = false) {
00363         $stack = $stack ? $stack : $this->_captureTrace();
00364         foreach ($stack as $frame) {
00365             if ($this->_frameLiesWithinSimpleTestFolder($frame)) {
00366                 continue;
00367             }
00368             if ($this->_frameMatchesPrefix($frame)) {
00369                 return ' at [' . $frame['file'] . ' line ' . $frame['line'] . ']';
00370             }
00371         }
00372         return '';
00373     }
00374 
00381     function _frameLiesWithinSimpleTestFolder($frame) {
00382         if (isset($frame['file'])) {
00383             $path = substr(SIMPLE_TEST, 0, -1);
00384             if (strpos($frame['file'], $path) === 0) {
00385                 if (dirname($frame['file']) == $path) {
00386                     return true;
00387                 }
00388             }
00389         }
00390         return false;
00391     }
00392 
00399     function _frameMatchesPrefix($frame) {
00400         foreach ($this->_prefixes as $prefix) {
00401             if (strncmp($frame['function'], $prefix, strlen($prefix)) == 0) {
00402                 return true;
00403             }
00404         }
00405         return false;
00406     }
00407 
00413     function _captureTrace() {
00414         if (function_exists('debug_backtrace')) {
00415             return array_reverse(debug_backtrace());
00416         }
00417         return array();
00418     }
00419 }
00420 
00426 class SimpleTestOptions extends SimpleTest {
00427 
00431     function getVersion() {
00432         return Simpletest::getVersion();
00433     }
00434 
00438     function ignore($class) {
00439         return Simpletest::ignore($class);
00440     }
00441 
00445     function isIgnored($class) {
00446         return Simpletest::isIgnored($class);
00447     }
00448 
00452     function setMockBaseClass($mock_base) {
00453         return Simpletest::setMockBaseClass($mock_base);
00454     }
00455 
00459     function getMockBaseClass() {
00460         return Simpletest::getMockBaseClass();
00461     }
00462 
00466     function useProxy($proxy, $username = false, $password = false) {
00467         return Simpletest::useProxy($proxy, $username, $password);
00468     }
00469 
00473     function getDefaultProxy() {
00474         return Simpletest::getDefaultProxy();
00475     }
00476 
00480     function getDefaultProxyUsername() {
00481         return Simpletest::getDefaultProxyUsername();
00482     }
00483 
00487     function getDefaultProxyPassword() {
00488         return Simpletest::getDefaultProxyPassword();
00489     }
00490 }
00491 ?>
 All Data Structures Namespaces Files Functions Variables Enumerations