not used, not up2date, just pollute the thing. trash it
authorx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Wed, 19 Oct 2005 20:07:00 +0000 (20:07 +0000)
committerx2000habouzit <x2000habouzit@839d8a87-29fc-0310-9880-83ba4fa771e5>
Wed, 19 Oct 2005 20:07:00 +0000 (20:07 +0000)
git-svn-id: svn+ssh://murphy/home/svn/platal/trunk@112 839d8a87-29fc-0310-9880-83ba4fa771e5

34 files changed:
htdocs/TESTS/__init__.php [deleted file]
htdocs/TESTS/index.php [deleted file]
htdocs/TESTS/simpletest/README [deleted file]
htdocs/TESTS/simpletest/VERSION [deleted file]
htdocs/TESTS/simpletest/authentication.php [deleted file]
htdocs/TESTS/simpletest/browser.php [deleted file]
htdocs/TESTS/simpletest/dumper.php [deleted file]
htdocs/TESTS/simpletest/errors.php [deleted file]
htdocs/TESTS/simpletest/expectation.php [deleted file]
htdocs/TESTS/simpletest/extensions/pear_test_case.php [deleted file]
htdocs/TESTS/simpletest/extensions/phpunit_test_case.php [deleted file]
htdocs/TESTS/simpletest/form.php [deleted file]
htdocs/TESTS/simpletest/frames.php [deleted file]
htdocs/TESTS/simpletest/http.php [deleted file]
htdocs/TESTS/simpletest/mock_objects.php [deleted file]
htdocs/TESTS/simpletest/options.php [deleted file]
htdocs/TESTS/simpletest/page.php [deleted file]
htdocs/TESTS/simpletest/parser.php [deleted file]
htdocs/TESTS/simpletest/remote.php [deleted file]
htdocs/TESTS/simpletest/reporter.php [deleted file]
htdocs/TESTS/simpletest/scorer.php [deleted file]
htdocs/TESTS/simpletest/shell_tester.php [deleted file]
htdocs/TESTS/simpletest/simple_test.php [deleted file]
htdocs/TESTS/simpletest/socket.php [deleted file]
htdocs/TESTS/simpletest/tag.php [deleted file]
htdocs/TESTS/simpletest/unit_tester.php [deleted file]
htdocs/TESTS/simpletest/url.php [deleted file]
htdocs/TESTS/simpletest/user_agent.php [deleted file]
htdocs/TESTS/simpletest/web_tester.php [deleted file]
htdocs/TESTS/simpletest/xml.php [deleted file]
htdocs/TESTS/xorg_env.php [deleted file]
htdocs/TESTS/xorg_errors.php [deleted file]
htdocs/TESTS/xorg_lists.php [deleted file]
htdocs/TESTS/xorg_user.php [deleted file]

diff --git a/htdocs/TESTS/__init__.php b/htdocs/TESTS/__init__.php
deleted file mode 100644 (file)
index 6e52988..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-ini_set("include_path", "../../:./simpletest/:".ini_get('include_path'));
-define('PATH', dirname(__FILE__));
-
-require_once('unit_tester.php');
-require_once('mock_objects.php');
-require_once('reporter.php');
-require_once('xorg.globals.inc.php');
-XorgGlobals::init();
-
-$reporter = new HtmlReporter();
-?>
diff --git a/htdocs/TESTS/index.php b/htdocs/TESTS/index.php
deleted file mode 100644 (file)
index 41eef5d..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-require_once("__init__.php");
-    
-require_once('shell_tester.php');
-require_once('mock_objects.php');
-
-class MyReporter extends SimpleReporter {
-    function MyReporter() {
-        HtmlReporter::sendNoCacheHeaders();
-        $this->SimpleReporter();
-    }
-
-    function paintFooter($test_name) {
-        global $tfile;
-        $class = $this->getFailCount() + $this->getExceptionCount() > 0 ?  "red" : "green";
-        print "<div class='$class'>";
-        print "<h1><a href='".basename($tfile)."'>$test_name</a> (";
-        print $this->getTestCaseProgress() . "/" . $this->getTestCaseCount();
-        print ")</h1>\n";
-        print "<strong>" . $this->getPassCount() . "</strong> passes | ";
-        print "<strong>" . $this->getFailCount() . "</strong> fails | ";
-        print "<strong>" . $this->getExceptionCount() . "</strong> exceptions.";
-        print "</div>\n";
-        flush();
-    }
-}
-
-echo <<<EOF
-<html>
-  <head>
-    <title>ALL TESTS</title>
-    <style type="text/css">
-      body { padding: 0px; margin: 0px;}
-      div { float: left; color: white; padding: 1ex; border: 1px dashed white; }
-      h1  { padding: 0px; margin: 0px;  font-size: 120%; }
-      a , a:visited { color: inherit; }
-      .red   { background-color: red; }
-      .green { background-color: green; }
-      
-    </style>
-  </head>
-  <body>
-EOF;
-
-foreach (glob(PATH.'/*_*.php') as $tfile) {
-    $reporter = new MyReporter;
-    require_once($tfile);
-}
-
-print "</body>\n</html>\n";
-?>
diff --git a/htdocs/TESTS/simpletest/README b/htdocs/TESTS/simpletest/README
deleted file mode 100644 (file)
index ceeca0b..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-Simple Test
-===========
-You probably got this package from...
-http://sourceforge.net/projects/simpletest/
-
-If there is no licence agreement with this package please download
-a version from the location above. You must read and accept that
-licence to use this software. The file is titled simply LICENSE.
-
-What is it? It's a framework for unit testing, web site testing and
-mock objects for PHP 4.3+.
-
-If you have used JUnit you will find this PHP unit testing version very
-similar. Also included is a mock objects and server stubs generator.
-The stubs can have return values set for different arguments, can have
-sequences set also by arguments and can return items by reference.
-The mocks inherit all of this functionality and can also have
-expectations set, again in sequences and for different arguments.
-
-A web tester similar in concept to JWebUnit is also included. There is no
-JavaScript or tables support, but forms, authentication and cookies are
-handled. Frames will be supported soon.
-
-You are not tied to just using SimpleTest, though. The mocks and stubs
-will work with other test frameworks and SimpleTest can use other
-framework's (PHPUnit, PEAR::PhpUnit) test cases as it's own. The
-web browser part of the web tester can also be used independently either
-in other testers or as part of a scripting solution.
-
-You can see a release schedule at
-http://www.lastcraft.com/overview.php which is also copied to the
-documentation folder with this release. The user interface is minimal
-in the extreme, but a lot of information flows from the test suite.
-After version 1.0 we will release a better web UI, but we are leaving XUL
-and GTk versions to volunteers as everybody has their own opinion
-on a good GUI, and we don't want to discourage development by shipping
-one with the toolkit.
-
-If you are extending the toolkit or wish to bundle parts of the toolkit
-with your own software, you can see a full PHPDoc API on sourceforge
-as http://simpletest.sourceforge.net/.
-
-You are looking at a Beta release.
-
-The unit tester and mock object generator are tested and have already
-been used to test several systems. The web tester portion still lacks
-frames support, but is mostly stable. Documentaion is currently lacking,
-but should be improved for a version 1.0 release.
-
-The unit tests for SimpleTest itself can be run here...
-
-simpletest/test/unit_tests.php
-
-And tests involving live network connections as well are here...
-
-simpletest/test/all_tests.php
-
-The full tests read some test data from the LastCraft site. If the site
-is down or has been modified for a later version then you will get
-spurious errors. A unit_tests.php failure on the other hand would be
-very serious. As far as we know we haven't yet managed to check in any
-test failures so please correct us if you find one.
-
-Even if all of the tests run please verify that your existing test suites
-also function as expected. If they don't see the file...
-
-simpletest/HELP_MY_TESTS_DONT_WORK_ANYMORE
-
-This contains information on interface changes. It also points out
-deprecated interfaces so you should read this even if all of
-your current tests appear to run.
-
-You can find a tutorial on http://www.lastcraft.com/first_test_tutorial.php to
-get you started and hopefully this material will eventually become included
-with the project documentation. There is a documentation folder, but it is
-just a subset of the material on Sourceforge.
-
-If you download and use and possibly even extend this tool, please let us
-know. Any feedback, even bad, is always welcome and we will work to get
-your suggestions into the version one release. Ideally please send your
-comments to...
-
-simpletest-support@lists.sourceforge.net
-
-...so that others can read them too. We usually try to respond within 48
-hours.
-
-There is no change log as yet except at sourceforge. You can visit the
-release notes to see the completed TODO list after each cycle and also the
-status of any bugs, but if the bug is recent then it will be fixed in CVS only.
-The CVS check-ins always have all the tests passing and so CVS snapshots should
-be pretty usable, although the code may not look so good internally.
-
-Oh, yes. It is called "Simple" because it should be simple to
-use. We intend to add a complete set of tools for a test first
-and "test as you code" type of development. "Simple" does not
-mean "Lite" in this context.
-
-Thanks to everyone who has sent comments and offered suggestions, they
-really are invaluable.
-
-Thanks to the advanced PHP forum on SitePoint. It is the place to be right
-now.
-
-Authors are Marcus Baker, Jason Sweat and Harry Feucks.
-
-yours, Marcus Baker
--- 
-marcus@lastcraft.com
diff --git a/htdocs/TESTS/simpletest/VERSION b/htdocs/TESTS/simpletest/VERSION
deleted file mode 100644 (file)
index 9e4db03..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1.0RC1
diff --git a/htdocs/TESTS/simpletest/authentication.php b/htdocs/TESTS/simpletest/authentication.php
deleted file mode 100644 (file)
index 4301c04..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: authentication.php,v 1.8 2004/07/28 16:42:08 lastcraft Exp $
-     */
-    /**
-     * include http class
-     */
-    require_once(dirname(__FILE__) . '/http.php');
-    
-    /**
-     *    Represents a single security realm's identity.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleRealm {
-        var $_type;
-        var $_root;
-        var $_username;
-        var $_password;
-        
-        /**
-         *    Starts with the initial entry directory.
-         *    @param string $type      Authentication type for this
-         *                             realm. Only Basic authentication
-         *                             is currently supported.
-         *    @param SimpleUrl $url    Somewhere in realm.
-         *    @access public
-         */
-        function SimpleRealm($type, $url) {
-            $this->_type = $type;
-            $this->_root = $url->getBasePath();
-            $this->_username = false;
-            $this->_password = false;
-        }
-        
-        /**
-         *    Adds another location to the realm.
-         *    @param SimpleUrl $url    Somewhere in realm.
-         *    @access public
-         */
-        function stretch($url) {
-            $this->_root = $this->_getCommonPath($this->_root, $url->getPath());
-        }
-        
-        /**
-         *    Finds the common starting path.
-         *    @param string $first        Path to compare.
-         *    @param string $second       Path to compare.
-         *    @return string              Common directories.
-         *    @access private
-         */
-        function _getCommonPath($first, $second) {
-            $first = explode('/', $first);
-            $second = explode('/', $second);
-            for ($i = 0; $i < min(count($first), count($second)); $i++) {
-                if ($first[$i] != $second[$i]) {
-                    return implode('/', array_slice($first, 0, $i)) . '/';
-                }
-            }
-            return implode('/', $first) . '/';
-        }
-        
-        /**
-         *    Sets the identity to try within this realm.
-         *    @param string $username    Username in authentication dialog.
-         *    @param string $username    Password in authentication dialog.
-         *    @access public
-         */
-        function setIdentity($username, $password) {
-            $this->_username = $username;
-            $this->_password = $password;
-        }
-        
-        /**
-         *    Accessor for current identity.
-         *    @return string        Last succesful username.
-         *    @access public
-         */
-        function getUsername() {
-            return $this->_username;
-        }
-        
-        /**
-         *    Accessor for current identity.
-         *    @return string        Last succesful password.
-         *    @access public
-         */
-        function getPassword() {
-            return $this->_password;
-        }
-        
-        /**
-         *    Test to see if the URL is within the directory
-         *    tree of the realm.
-         *    @param SimpleUrl $url    URL to test.
-         *    @return boolean          True if subpath.
-         *    @access public
-         */
-        function isWithin($url) {
-            return (strpos($url->getBasePath(), $this->_root) === 0);
-        }
-    }
-    
-    /**
-     *    Manages security realms.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleAuthenticator {
-        var $_realms;
-        
-        /**
-         *    Starts with no realms set up.
-         *    @access public
-         */
-        function SimpleAuthenticator() {
-            $this->_realms = array();
-        }
-        
-        /**
-         *    Adds a new realm centered the current URL.
-         *    Browsers vary wildly on their behaviour in this
-         *    regard. Mozilla ignores the realm and presents
-         *    only when challenged, wasting bandwidth. IE
-         *    just carries on presenting until a new challenge
-         *    occours. SimpleTest tries to follow the spirit of
-         *    the original standards committee and treats the
-         *    base URL as the root of a file tree shaped realm.
-         *    @param SimpleUrl $url    Base of realm.
-         *    @param string $type      Authentication type for this
-         *                             realm. Only Basic authentication
-         *                             is currently supported.
-         *    @param string $realm     Name of realm.
-         *    @access public
-         */
-        function addRealm($url, $type, $realm) {
-            $this->_realms[$url->getHost()][$realm] = new SimpleRealm($type, $url);
-        }
-        
-        /**
-         *    Sets the current identity to be presented
-         *    against that realm.
-         *    @param string $host        Server hosting realm.
-         *    @param string $realm       Name of realm.
-         *    @param string $username    Username for realm.
-         *    @param string $password    Password for realm.
-         *    @access public
-         */
-        function setIdentityForRealm($host, $realm, $username, $password) {
-            if (isset($this->_realms[$host][$realm])) {
-                $this->_realms[$host][$realm]->setIdentity($username, $password);
-            }
-        }
-        
-        /**
-         *    Finds the name of the realm by comparing URLs.
-         *    @param SimpleUrl $url        URL to test.
-         *    @return SimpleRealm          Name of realm.
-         *    @access private
-         */
-        function _findRealmFromUrl($url) {
-            if (! isset($this->_realms[$url->getHost()])) {
-                return false;
-            }
-            foreach ($this->_realms[$url->getHost()] as $name => $realm) {
-                if ($realm->isWithin($url)) {
-                    return $realm;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Presents the appropriate headers for this location.
-         *    @param SimpleHttpRequest $request  Request to modify.
-         *    @param SimpleUrl $url              Base of realm.
-         *    @access public
-         */
-        function addHeaders(&$request, $url) {
-            if ($url->getUsername() && $url->getPassword()) {
-                $username = $url->getUsername();
-                $password = $url->getPassword();
-            } elseif ($realm = $this->_findRealmFromUrl($url)) {
-                $username = $realm->getUsername();
-                $password = $realm->getPassword();
-            } else {
-                return;
-            }
-            $this->addBasicHeaders($request, $username, $password);
-        }
-        
-        /**
-         *    Presents the appropriate headers for this
-         *    location for basic authentication.
-         *    @param SimpleHttpRequest $request  Request to modify.
-         *    @param string $username            Username for realm.
-         *    @param string $password            Password for realm.
-         *    @access public
-         *    @static
-         */
-        function addBasicHeaders(&$request, $username, $password) {
-            if ($username && $password) {
-                $request->addHeaderLine(
-                        'Authorization: Basic ' . base64_encode("$username:$password"));
-            }
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/browser.php b/htdocs/TESTS/simpletest/browser.php
deleted file mode 100644 (file)
index 7715350..0000000
+++ /dev/null
@@ -1,966 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: browser.php,v 1.133 2004/08/18 23:10:19 lastcraft Exp $
-     */
-    
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/options.php');
-    require_once(dirname(__FILE__) . '/http.php');
-    require_once(dirname(__FILE__) . '/page.php');
-    require_once(dirname(__FILE__) . '/frames.php');
-    require_once(dirname(__FILE__) . '/user_agent.php');
-    /**#@-*/
-    
-    /**
-     *    Browser history list.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleBrowserHistory {
-        var $_sequence;
-        var $_position;
-        
-        /**
-         *    Starts empty.
-         *    @access public
-         */
-        function SimpleBrowserHistory() {
-            $this->_sequence = array();
-            $this->_position = -1;
-        }
-        
-        /**
-         *    Test for no entries yet.
-         *    @return boolean        True if empty.
-         *    @access private
-         */
-        function _isEmpty() {
-            return ($this->_position == -1);
-        }
-        
-        /**
-         *    Test for being at the beginning.
-         *    @return boolean        True if first.
-         *    @access private
-         */
-        function _atBeginning() {
-            return ($this->_position == 0) && ! $this->_isEmpty();
-        }
-        
-        /**
-         *    Test for being at the last entry.
-         *    @return boolean        True if last.
-         *    @access private
-         */
-        function _atEnd() {
-            return ($this->_position + 1 >= count($this->_sequence)) && ! $this->_isEmpty();
-        }
-        
-        /**
-         *    Adds a successfully fetched page to the history.
-         *    @param string $method    GET or POST.
-         *    @param SimpleUrl $url    URL of fetch.
-         *    @param array $parameters Any post data with the fetch.
-         *    @access public
-         */
-        function recordEntry($method, $url, $parameters) {
-            $this->_dropFuture();
-            array_push(
-                    $this->_sequence,
-                    array('method' => $method, 'url' => $url, 'parameters' => $parameters));
-            $this->_position++;
-        }
-        
-        /**
-         *    Last fetching method for current history
-         *    position.
-         *    @return string      GET or POST for this point in
-         *                        the history.
-         *    @access public
-         */
-        function getMethod() {
-            if ($this->_isEmpty()) {
-                return false;
-            }
-            return $this->_sequence[$this->_position]['method'];
-        }
-        
-        /**
-         *    Last fully qualified URL for current history
-         *    position.
-         *    @return SimpleUrl        URL for this position.
-         *    @access public
-         */
-        function getUrl() {
-            if ($this->_isEmpty()) {
-                return false;
-            }
-            return $this->_sequence[$this->_position]['url'];
-        }
-        
-        /**
-         *    Parameters of last fetch from current history
-         *    position.
-         *    @return array        Hash of post parameters.
-         *    @access public
-         */
-        function getParameters() {
-            if ($this->_isEmpty()) {
-                return false;
-            }
-            return $this->_sequence[$this->_position]['parameters'];
-        }
-        
-        /**
-         *    Step back one place in the history. Stops at
-         *    the first page.
-         *    @return boolean     True if any previous entries.
-         *    @access public
-         */
-        function back() {
-            if ($this->_isEmpty() || $this->_atBeginning()) {
-                return false;
-            }
-            $this->_position--;
-            return true;
-        }
-        
-        /**
-         *    Step forward one place. If already at the
-         *    latest entry then nothing will happen.
-         *    @return boolean     True if any future entries.
-         *    @access public
-         */
-        function forward() {
-            if ($this->_isEmpty() || $this->_atEnd()) {
-                return false;
-            }
-            $this->_position++;
-            return true;
-        }
-        
-        /**
-         *    Ditches all future entries beyond the current
-         *    point.
-         *    @access private
-         */
-        function _dropFuture() {
-            if ($this->_isEmpty()) {
-                return;
-            }
-            while (! $this->_atEnd()) {
-                array_pop($this->_sequence);
-            }
-        }
-    }
-    
-    /**
-     *    Simulated web browser. This is an aggregate of
-     *    the user agent, the HTML parsing, request history
-     *    and the last header set.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleBrowser {
-        var $_user_agent;
-        var $_page;
-        var $_history;
-        var $_ignore_frames;
-        
-        /**
-         *    Starts with a fresh browser with no
-         *    cookie or any other state information. The
-         *    exception is that a default proxy will be
-         *    set up if specified in the options.
-         *    @access public
-         */
-        function SimpleBrowser() {
-            $this->_user_agent = &$this->_createUserAgent();
-            $this->_user_agent->useProxy(
-                    SimpleTestOptions::getDefaultProxy(),
-                    SimpleTestOptions::getDefaultProxyUsername(),
-                    SimpleTestOptions::getDefaultProxyPassword());
-            $this->_page = &new SimplePage();
-            $this->_history = &$this->_createHistory();
-            $this->_ignore_frames = false;
-        }
-        
-        /**
-         *    Creates the underlying user agent.
-         *    @return SimpleFetcher    Content fetcher.
-         *    @access protected
-         */
-        function &_createUserAgent() {
-            return new SimpleUserAgent();
-        }
-        
-        /**
-         *    Creates a new empty history list.
-         *    @return SimpleBrowserHistory    New list.
-         *    @access protected
-         */
-        function &_createHistory() {
-            return new SimpleBrowserHistory();
-        }
-        
-        /**
-         *    Disables frames support. Frames will not be fetched
-         *    and the frameset page will be used instead.
-         *    @access public
-         */
-        function ignoreFrames() {
-            $this->_ignore_frames = true;
-        }
-        
-        /**
-         *    Enables frames support. Frames will be fetched from
-         *    now on.
-         *    @access public
-         */
-        function useFrames() {
-            $this->_ignore_frames = false;
-        }
-        
-        /**
-         *    Parses the raw content into a page. Will load further
-         *    frame pages unless frames are disabled.
-         *    @param SimpleHttpResponse $response    Response from fetch.
-         *    @return SimplePage                     Parsed HTML.
-         *    @access protected
-         */
-        function &_parse($response) {
-            $builder = &new SimplePageBuilder();
-            $page = &$builder->parse($response);
-            if ($this->_ignore_frames || ! $page->hasFrames()) {
-                return $page;
-            }
-            $frameset = &new SimpleFrameset($page);
-            foreach ($page->getFrameset() as $key => $url) {
-                $frame = &$this->_fetch('GET', $url, array());
-                $frameset->addFrame($frame, $key);
-            }
-            return $frameset;
-        }
-        
-        /**
-         *    Fetches a page.
-         *    @param string $method           GET or POST.
-         *    @param string/SimpleUrl $url    Target to fetch as string.
-         *    @param hash $parameters         POST parameters.
-         *    @return SimplePage              Parsed page.
-         *    @access private
-         */
-        function &_fetch($method, $url, $parameters) {
-            $response = &$this->_user_agent->fetchResponse($method, $url, $parameters);
-            if ($response->isError()) {
-                return new SimplePage($response);
-            }
-            return $this->_parse($response);
-        }
-        
-        /**
-         *    Fetches a page or a single frame if that is the current
-         *    focus.
-         *    @param string $method           GET or POST.
-         *    @param string/SimpleUrl $url    Target to fetch as string.
-         *    @param hash $parameters         POST parameters.
-         *    @return string                  Raw content of page.
-         *    @access private
-         */
-        function _load($method, $url, $parameters = false) {
-            $frame = $url->getTarget();
-            if (! $frame || (strtolower($frame) == '_top')) {
-                return $this->_loadPage($method, $url, $parameters);
-            }
-            return $this->_loadFrame(array($frame), $method, $url, $parameters);
-        }
-        
-        /**
-         *    Fetches a page and makes it the current page/frame.
-         *    @param string $method           GET or POST.
-         *    @param string/SimpleUrl $url    Target to fetch as string.
-         *    @param hash $parameters         POST parameters.
-         *    @return string                  Raw content of page.
-         *    @access private
-         */
-        function _loadPage($method, $url, $parameters = false) {
-            $this->_page = &$this->_fetch(strtoupper($method), $url, $parameters);
-            $this->_history->recordEntry(
-                    $this->_page->getMethod(),
-                    $this->_page->getUrl(),
-                    $this->_page->getRequestData());
-            return $this->_page->getRaw();
-        }
-        
-        /**
-         *    Fetches a frame into the existing frameset replacing the
-         *    original.
-         *    @param array $frames            List of names to drill down.
-         *    @param string $method           GET or POST.
-         *    @param string/SimpleUrl $url    Target to fetch as string.
-         *    @param hash $parameters         POST parameters.
-         *    @return string                  Raw content of page.
-         *    @access private
-         */
-        function _loadFrame($frames, $method, $url, $parameters = false) {
-            $page = &$this->_fetch(strtoupper($method), $url, $parameters);
-            $this->_page->setFrame($frames, $page);
-        }
-        
-        /**
-         *    Removes expired and temporary cookies as if
-         *    the browser was closed and re-opened.
-         *    @param string/integer $date   Time when session restarted.
-         *                                  If omitted then all persistent
-         *                                  cookies are kept.
-         *    @access public
-         */
-        function restartSession($date = false) {
-            $this->_user_agent->restartSession($date);
-        }
-        
-        /**
-         *    Adds a header to every fetch.
-         *    @param string $header       Header line to add to every
-         *                                request until cleared.
-         *    @access public
-         */
-        function addHeader($header) {
-            $this->_user_agent->addHeader($header);
-        }
-        
-        /**
-         *    Ages the cookies by the specified time.
-         *    @param integer $interval    Amount in seconds.
-         *    @access public
-         */
-        function ageCookies($interval) {
-            $this->_user_agent->ageCookies($interval);
-        }
-        
-        /**
-         *    Sets an additional cookie. If a cookie has
-         *    the same name and path it is replaced.
-         *    @param string $name       Cookie key.
-         *    @param string $value      Value of cookie.
-         *    @param string $host       Host upon which the cookie is valid.
-         *    @param string $path       Cookie path if not host wide.
-         *    @param string $expiry     Expiry date.
-         *    @access public
-         */
-        function setCookie($name, $value, $host = false, $path = '/', $expiry = false) {
-            $this->_user_agent->setCookie($name, $value, $host, $path, $expiry);
-        }
-        
-        /**
-         *    Reads the most specific cookie value from the
-         *    browser cookies.
-         *    @param string $host        Host to search.
-         *    @param string $path        Applicable path.
-         *    @param string $name        Name of cookie to read.
-         *    @return string             False if not present, else the
-         *                               value as a string.
-         *    @access public
-         */
-        function getCookieValue($host, $path, $name) {
-            return $this->_user_agent->getCookieValue($host, $path, $name);
-        }
-        
-        /**
-         *    Reads the current cookies for the current URL.
-         *    @param string $name   Key of cookie to find.
-         *    @return string        Null if there is no current URL, false
-         *                          if the cookie is not set.
-         *    @access public
-         */
-        function getCurrentCookieValue($name) {
-            return $this->_user_agent->getBaseCookieValue($name, $this->_page->getUrl());
-        }
-        
-        /**
-         *    Sets the maximum number of redirects before
-         *    a page will be loaded anyway.
-         *    @param integer $max        Most hops allowed.
-         *    @access public
-         */
-        function setMaximumRedirects($max) {
-            $this->_user_agent->setMaximumRedirects($max);
-        }
-        
-        /**
-         *    Sets the socket timeout for opening a connection.
-         *    @param integer $timeout      Maximum time in seconds.
-         *    @access public
-         */
-        function setConnectionTimeout($timeout) {
-            $this->_user_agent->setConnectionTimeout($timeout);
-        }
-        
-        /**
-         *    Sets proxy to use on all requests for when
-         *    testing from behind a firewall. Set URL
-         *    to false to disable.
-         *    @param string $proxy        Proxy URL.
-         *    @param string $username     Proxy username for authentication.
-         *    @param string $password     Proxy password for authentication.
-         *    @access public
-         */
-        function useProxy($proxy, $username = false, $password = false) {
-            $this->_user_agent->useProxy($proxy, $username, $password);
-        }
-        
-        /**
-         *    Fetches the page content with a HEAD request.
-         *    Will affect cookies, but will not change the base URL.
-         *    @param string/SimpleUrl $url  Target to fetch as string.
-         *    @param hash $parameters       Additional parameters for GET request.
-         *    @return boolean               True if successful.
-         *    @access public
-         */
-        function head($url, $parameters = false) {
-            if (! is_object($url)) {
-                $url = new SimpleUrl($url);
-            }
-            if ($this->getUrl()) {
-                $url = $url->makeAbsolute($this->getUrl());
-            }
-            $response = &$this->_user_agent->fetchResponse(
-                    'HEAD',
-                    $url,
-                    $parameters);
-            return ! $response->isError();
-        }
-        
-        /**
-         *    Fetches the page content with a simple GET request.
-         *    @param string/SimpleUrl $url  Target to fetch.
-         *    @param hash $parameters       Additional parameters for GET request.
-         *    @return string                Content of page or false.
-         *    @access public
-         */
-        function get($url, $parameters = false) {
-            if (! is_object($url)) {
-                $url = new SimpleUrl($url);
-            }
-            if ($this->getUrl()) {
-                $url = $url->makeAbsolute($this->getUrl());
-            }
-            return $this->_load('GET', $url, $parameters);
-        }
-        
-        /**
-         *    Fetches the page content with a POST request.
-         *    @param string/SimpleUrl $url  Target to fetch as string.
-         *    @param hash $parameters       POST parameters.
-         *    @return string                Content of page.
-         *    @access public
-         */
-        function post($url, $parameters = false) {
-            if (! is_object($url)) {
-                $url = new SimpleUrl($url);
-            }
-            if ($this->getUrl()) {
-                $url = $url->makeAbsolute($this->getUrl());
-            }
-            return $this->_load('POST', $url, $parameters);
-        }
-        
-        /**
-         *    Equivalent to hitting the retry button on the
-         *    browser. Will attempt to repeat the page fetch. If
-         *    there is no history to repeat it will give false.
-         *    @return string/boolean   Content if fetch succeeded
-         *                             else false.
-         *    @access public
-         */
-        function retry() {
-            $frames = $this->_page->getFrameFocus();
-            if (count($frames) > 0) {
-                $this->_loadFrame(
-                        $frames,
-                        $this->_page->getMethod(),
-                        $this->_page->getUrl(),
-                        $this->_page->getRequestData());
-                return $this->_page->getRaw();
-            }
-            if ($method = $this->_history->getMethod()) {
-                $this->_page = &$this->_fetch(
-                        $method,
-                        $this->_history->getUrl(),
-                        $this->_history->getParameters());
-                return $this->_page->getRaw();
-            }
-            return false;
-        }
-        
-        /**
-         *    Equivalent to hitting the back button on the
-         *    browser. The browser history is unchanged on
-         *    failure.
-         *    @return boolean     True if history entry and
-         *                        fetch succeeded
-         *    @access public
-         */
-        function back() {
-            if (! $this->_history->back()) {
-                return false;
-            }
-            $content = $this->retry();
-            if (! $content) {
-                $this->_history->forward();
-            }
-            return $content;
-        }
-        
-        /**
-         *    Equivalent to hitting the forward button on the
-         *    browser. The browser history is unchanged on
-         *    failure.
-         *    @return boolean     True if history entry and
-         *                        fetch succeeded
-         *    @access public
-         */
-        function forward() {
-            if (! $this->_history->forward()) {
-                return false;
-            }
-            $content = $this->retry();
-            if (! $content) {
-                $this->_history->back();
-            }
-            return $content;
-        }
-        
-        /**
-         *    Retries a request after setting the authentication
-         *    for the current realm.
-         *    @param string $username    Username for realm.
-         *    @param string $password    Password for realm.
-         *    @return boolean            True if successful fetch. Note
-         *                               that authentication may still have
-         *                               failed.
-         *    @access public
-         */
-        function authenticate($username, $password) {
-            if (! $this->_page->getRealm()) {
-                return false;
-            }
-            $url = $this->_page->getUrl();
-            if (! $url) {
-                return false;
-            }
-            $this->_user_agent->setIdentity(
-                    $url->getHost(),
-                    $this->_page->getRealm(),
-                    $username,
-                    $password);
-            return $this->retry();
-        }
-        
-        /**
-         *    Accessor for a breakdown of the frameset.
-         *    @return array   Hash tree of frames by name
-         *                    or index if no name.
-         *    @access public
-         */
-        function getFrames() {
-            return $this->_page->getFrames();
-        }
-        
-        /**
-         *    Accessor for current frame focus. Will be
-         *    false if no frame has focus.
-         *    @return integer/string/boolean    Label if any, otherwise
-         *                                      the position in the frameset
-         *                                      or false if none.
-         *    @access public
-         */
-        function getFrameFocus() {
-            return $this->_page->getFrameFocus();
-        }
-        
-        /**
-         *    Sets the focus by index. The integer index starts from 1.
-         *    @param integer $choice    Chosen frame.
-         *    @return boolean           True if frame exists.
-         *    @access public
-         */
-        function setFrameFocusByIndex($choice) {
-            return $this->_page->setFrameFocusByIndex($choice);
-        }
-        
-        /**
-         *    Sets the focus by name.
-         *    @param string $name    Chosen frame.
-         *    @return boolean        True if frame exists.
-         *    @access public
-         */
-        function setFrameFocus($name) {
-            return $this->_page->setFrameFocus($name);
-        }
-        
-        /**
-         *    Clears the frame focus. All frames will be searched
-         *    for content.
-         *    @access public
-         */
-        function clearFrameFocus() {
-            return $this->_page->clearFrameFocus();
-        }
-        
-        /**
-         *    Accessor for last error.
-         *    @return string        Error from last response.
-         *    @access public
-         */
-        function getTransportError() {
-            return $this->_page->getTransportError();
-        }
-        
-        /**
-         *    Accessor for current MIME type.
-         *    @return string    MIME type as string; e.g. 'text/html'
-         *    @access public
-         */
-        function getMimeType() {
-            return $this->_page->getMimeType();
-        }
-        
-        /**
-         *    Accessor for last response code.
-         *    @return integer    Last HTTP response code received.
-         *    @access public
-         */
-        function getResponseCode() {
-            return $this->_page->getResponseCode();
-        }
-        
-        /**
-         *    Accessor for last Authentication type. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Description of challenge type.
-         *    @access public
-         */
-        function getAuthentication() {
-            return $this->_page->getAuthentication();
-        }
-        
-        /**
-         *    Accessor for last Authentication realm. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Name of security realm.
-         *    @access public
-         */
-        function getRealm() {
-            return $this->_page->getRealm();
-        }
-        
-        /**
-         *    Accessor for current URL of page or frame if
-         *    focused.
-         *    @return string    Location of current page or frame as
-         *                      a string.
-         */
-        function getUrl() {
-            $url = $this->_page->getUrl();
-            return $url ? $url->asString() : false;
-        }
-        
-        /**
-         *    Accessor for raw bytes sent down the wire.
-         *    @return string      Original text sent.
-         *    @access public
-         */
-        function getRequest() {
-            return $this->_page->getRequest();
-        }
-        
-        /**
-         *    Accessor for raw page information.
-         *    @return string      Original text content of web page.
-         *    @access public
-         */
-        function getContent() {
-            return $this->_page->getRaw();
-        }
-        
-        /**
-         *    Accessor for raw header information.
-         *    @return string      Header block.
-         *    @access public
-         */
-        function getHeaders() {
-            return $this->_page->getHeaders();
-        }
-        
-        /**
-         *    Accessor for parsed title.
-         *    @return string     Title or false if no title is present.
-         *    @access public
-         */
-        function getTitle() {
-            return $this->_page->getTitle();
-        }
-        
-        /**
-         *    Accessor for a list of all fixed links in current page.
-         *    @return array   List of urls with scheme of
-         *                    http or https and hostname.
-         *    @access public
-         */
-        function getAbsoluteUrls() {
-            return $this->_page->getAbsoluteUrls();
-        }
-        
-        /**
-         *    Accessor for a list of all relative links.
-         *    @return array      List of urls without hostname.
-         *    @access public
-         */
-        function getRelativeUrls() {
-            return $this->_page->getRelativeUrls();
-        }
-        
-        /**
-         *    Sets all form fields with that name.
-         *    @param string $name    Name of field in forms.
-         *    @param string $value   New value of field.
-         *    @return boolean        True if field exists, otherwise false.
-         *    @access public
-         */
-        function setField($name, $value) {
-            return $this->_page->setField($name, $value);
-        }
-          
-        /**
-         *    Sets all form fields with that name.
-         *    @param string/integer $id   Id of field in forms.
-         *    @param string $value        New value of field.
-         *    @return boolean             True if field exists, otherwise false.
-         *    @access public
-         */
-        function setFieldById($id, $value) {
-            return $this->_page->setFieldById($id, $value);
-        }
-      
-        /**
-         *    Accessor for a form element value within the page.
-         *    Finds the first match.
-         *    @param string $name        Field name.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getField($name) {
-            return $this->_page->getField($name);
-        }
-        
-        /**
-         *    Accessor for a form element value within the page.
-         *    @param string/integer $id  Id of field in forms.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getFieldById($id) {
-            return $this->_page->getFieldById($id);
-        }
-        
-        /**
-         *    Clicks the submit button by label. The owning
-         *    form will be submitted by this.
-         *    @param string $label    Button label. An unlabeled
-         *                            button can be triggered by 'Submit'.
-         *    @return boolean         True on success.
-         *    @access public
-         */
-        function clickSubmit($label = 'Submit') {
-            if (! ($form = &$this->_page->getFormBySubmitLabel($label))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitButtonByLabel($label));
-        }
-        
-        /**
-         *    Clicks the submit button by name attribute. The owning
-         *    form will be submitted by this.
-         *    @param string $name     Button name.
-         *    @return boolean         True on success.
-         *    @access public
-         */
-        function clickSubmitByName($name) {
-            if (! ($form = &$this->_page->getFormBySubmitName($name))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitButtonByName($name));
-        }
-        
-        /**
-         *    Clicks the submit button by ID attribute of the button
-         *    itself. The owning form will be submitted by this.
-         *    @param string $id       Button ID.
-         *    @return boolean         True on success.
-         *    @access public
-         */
-        function clickSubmitById($id) {
-            if (! ($form = &$this->_page->getFormBySubmitId($id))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitButtonById($id));
-        }
-        
-        /**
-         *    Clicks the submit image by some kind of label. Usually
-         *    the alt tag or the nearest equivalent. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param string $label   ID attribute of button.
-         *    @param integer $x      X-coordinate of imaginary click.
-         *    @param integer $y      Y-coordinate of imaginary click.
-         *    @return boolean        True on successful submit.
-         *    @access public
-         */
-        function clickImage($label, $x = 1, $y = 1) {
-            if (! ($form = &$this->_page->getFormByImageLabel($label))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitImageByLabel($label, $x, $y));
-        }
-        
-        /**
-         *    Clicks the submit image by the name. Usually
-         *    the alt tag or the nearest equivalent. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param string $name    Name attribute of button.
-         *    @param integer $x      X-coordinate of imaginary click.
-         *    @param integer $y      Y-coordinate of imaginary click.
-         *    @return boolean        True on successful submit.
-         *    @access public
-         */
-        function clickImageByName($name, $x = 1, $y = 1) {
-            if (! ($form = &$this->_page->getFormByImageName($name))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitImageByName($name, $x, $y));
-        }
-         
-        /**
-         *    Clicks the submit image by ID attribute. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param integer/string $id   ID attribute of button.
-         *    @param integer $x           X-coordinate of imaginary click.
-         *    @param integer $y           Y-coordinate of imaginary click.
-         *    @return boolean             True on successful submit.
-         *    @access public
-         */
-        function clickImageById($id, $x = 1, $y = 1) {
-            if (! ($form = &$this->_page->getFormByImageId($id))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submitImageById($id, $x, $y));
-        }
-        
-        /**
-         *    Submits a form by the ID.
-         *    @param string $id    The form ID. No submit button value
-         *                         will be sent.
-         *    @return boolean      True on success.
-         *    @access public
-         */
-        function submitFormById($id) {
-            if (! ($form = &$this->_page->getFormById($id))) {
-                return false;
-            }
-            return $this->_load(
-                    $form->getMethod(),
-                    $form->getAction(),
-                    $form->submit());
-        }
-        
-        /**
-         *    Follows a link by label. Will click the first link
-         *    found with this link text by default, or a later
-         *    one if an index is given. The match ignores case and
-         *    white space issues.
-         *    @param string $label     Text between the anchor tags.
-         *    @param integer $index    Link position counting from zero.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function clickLink($label, $index = 0) {
-            $urls = $this->_page->getUrlsByLabel($label);
-            if (count($urls) == 0) {
-                return false;
-            }
-            if (count($urls) < $index + 1) {
-                return false;
-            }
-            $this->_load('GET', $urls[$index]);
-            return true;
-        }
-        
-        /**
-         *    Tests to see if a link is present by label.
-         *    @param string $label     Text of value attribute.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function isLink($label) {
-            return (count($this->_page->getUrlsByLabel($label)) > 0);
-        }
-        
-        /**
-         *    Follows a link by id attribute.
-         *    @param string $id        ID attribute value.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function clickLinkById($id) {
-            if (! ($url = $this->_page->getUrlById($id))) {
-                return false;
-            }
-            $this->_load('GET', $url);
-            return true;
-        }
-        
-        /**
-         *    Tests to see if a link is present by ID attribute.
-         *    @param string $id     Text of id attribute.
-         *    @return boolean       True if link present.
-         *    @access public
-         */
-        function isLinkById($id) {
-            return (boolean)$this->_page->getUrlById($id);
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/dumper.php b/htdocs/TESTS/simpletest/dumper.php
deleted file mode 100644 (file)
index 5cdb8b9..0000000
+++ /dev/null
@@ -1,363 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: dumper.php,v 1.20 2004/08/15 02:24:38 lastcraft Exp $
-     */
-    /**
-     * does type matter
-     */
-    define('TYPE_MATTERS', true);
-    
-    /**
-     *    Displays variables as text and does diffs.
-        *        @package      SimpleTest
-        *        @subpackage   UnitTester
-     */
-    class SimpleDumper {
-        
-        /**
-         *    Do nothing constructor.
-         */
-        function SimpleDumper() {
-        }
-        
-        /**
-         *    Renders a variable in a shorter form than print_r().
-         *    @param mixed $value      Variable to render as a string.
-         *    @return string           Human readable string form.
-         *    @access public
-         */
-        function describeValue($value) {
-            $type = $this->getType($value);
-            switch($type) {
-                case "Null":
-                    return "NULL";
-                case "Boolean":
-                    return "Boolean: " . ($value ? "true" : "false");
-                case "Array":
-                    return "Array: " . count($value) . " items";
-                case "Object":
-                    return "Object: of " . get_class($value);
-                case "String":
-                    return "String: " . $this->clipString($value, 100);
-                default:
-                    return "$type: $value";
-            }
-            return "Unknown";
-        }
-        
-        /**
-         *    Gets the string representation of a type.
-         *    @param mixed $value    Variable to check against.
-         *    @return string         Type.
-         *    @access public
-         */
-        function getType($value) {
-            if (! isset($value)) {
-                return "Null";
-            } elseif (is_bool($value)) {
-                return "Boolean";
-            } elseif (is_string($value)) {
-                return "String";
-            } elseif (is_integer($value)) {
-                return "Integer";
-            } elseif (is_float($value)) {
-                return "Float";
-            } elseif (is_array($value)) {
-                return "Array";
-            } elseif (is_resource($value)) {
-                return "Resource";
-            } elseif (is_object($value)) {
-                return "Object";
-            }
-            return "Unknown";
-        }
-
-        /**
-         *    Creates a human readable description of the
-         *    difference between two variables. Uses a
-         *    dynamic call.
-         *    @param mixed $first        First variable.
-         *    @param mixed $second       Value to compare with.
-         *    @param boolean $identical  If true then type anomolies count.
-         *    @return string             Description of difference.
-         *    @access public
-         */
-        function describeDifference($first, $second, $identical = false) {
-            if ($identical) {
-                if (! $this->_isTypeMatch($first, $second)) {
-                    return "with type mismatch as [" . $this->describeValue($first) .
-                        "] does not match [" . $this->describeValue($second) . "]";
-                }
-            }
-            $type = $this->getType($first);
-            if ($type == "Unknown") {
-                return "with unknown type";
-            }
-            $method = '_describe' . $type . 'Difference';
-            return $this->$method($first, $second, $identical);
-        }
-        
-        /**
-         *    Tests to see if types match.
-         *    @param mixed $first        First variable.
-         *    @param mixed $second       Value to compare with.
-         *    @return boolean            True if matches.
-         *    @access private
-         */
-        function _isTypeMatch($first, $second) {
-            return ($this->getType($first) == $this->getType($second));
-        }
-
-        /**
-         *    Clips a string to a maximum length.
-         *    @param string $value         String to truncate.
-         *    @param integer $size         Minimum string size to show.
-         *    @param integer $position     Centre of string section.
-         *    @return string               Shortened version.
-         *    @access public
-         */
-        function clipString($value, $size, $position = 0) {
-            $length = strlen($value);
-            if ($length <= $size) {
-                return $value;
-            }
-            $position = min($position, $length);
-            $start = ($size/2 > $position ? 0 : $position - $size/2);
-            if ($start + $size > $length) {
-                $start = $length - $size;
-            }
-            $value = substr($value, $start, $size);
-            return ($start > 0 ? "..." : "") . $value . ($start + $size < $length ? "..." : "");
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between two variables. The minimal
-         *    version.
-         *    @param null $first          First value.
-         *    @param mixed $second        Value to compare with.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeGenericDifference($first, $second) {
-            return "as [" . $this->describeValue($first) .
-                    "] does not match [" .
-                    $this->describeValue($second) . "]";
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between a null and another variable.
-         *    @param null $first          First null.
-         *    @param mixed $second        Null to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeNullDifference($first, $second, $identical) {
-            return $this->_describeGenericDifference($first, $second);
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between a boolean and another variable.
-         *    @param boolean $first       First boolean.
-         *    @param mixed $second        Boolean to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeBooleanDifference($first, $second, $identical) {
-            return $this->_describeGenericDifference($first, $second);
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between a string and another variable.
-         *    @param string $first        First string.
-         *    @param mixed $second        String to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeStringDifference($first, $second, $identical) {
-            if (is_object($second) || is_array($second)) {
-                return $this->_describeGenericDifference($first, $second);
-            }
-            $position = $this->_stringDiffersAt($first, $second);
-            $message = "at character $position";
-            $message .= " with [" .
-                    $this->clipString($first, 100, $position) . "] and [" .
-                    $this->clipString($second, 100, $position) . "]";
-            return $message;
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between an integer and another variable.
-         *    @param integer $first       First number.
-         *    @param mixed $second        Number to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeIntegerDifference($first, $second, $identical) {
-            if (is_object($second) || is_array($second)) {
-                return $this->_describeGenericDifference($first, $second);
-            }
-            return "because [" . $this->describeValue($first) .
-                    "] differs from [" .
-                    $this->describeValue($second) . "] by " .
-                    abs($first - $second);
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between two floating point numbers.
-         *    @param float $first         First float.
-         *    @param mixed $second        Float to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeFloatDifference($first, $second, $identical) {
-            if (is_object($second) || is_array($second)) {
-                return $this->_describeGenericDifference($first, $second);
-            }
-            return "because " . $this->describeValue($first) .
-                    "] differs from [" .
-                    $this->describeValue($second) . "]";
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between two arrays.
-         *    @param array $first         First array.
-         *    @param mixed $second        Array to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeArrayDifference($first, $second, $identical) {
-            if (! is_array($second)) {
-                return $this->_describeGenericDifference($first, $second);
-            }
-            if (array_keys($first) !== array_keys($second)) {
-                return "as key list [" .
-                        implode(", ", array_keys($first)) . "] does not match key list [" .
-                        implode(", ", array_keys($second)) . "]";
-            }
-            foreach (array_keys($first) as $key) {
-                if ($identical && ($first[$key] === $second[$key])) {
-                    continue;
-                }
-                if (! $identical && ($first[$key] == $second[$key])) {
-                    continue;
-                }
-                return "with member [$key] " . $this->describeDifference(
-                        $first[$key],
-                        $second[$key],
-                        $identical);
-            }
-            return "";
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between a resource and another variable.
-         *    @param resource $first       First resource.
-         *    @param mixed $second         Resource to compare with.
-         *    @param boolean $identical    If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeResourceDifference($first, $second, $identical) {
-            return $this->_describeGenericDifference($first, $second);
-        }
-        
-        /**
-         *    Creates a human readable description of the
-         *    difference between two objects.
-         *    @param object $first        First object.
-         *    @param mixed $second        Object to compare with.
-         *    @param boolean $identical   If true then type anomolies count.
-         *    @return string              Human readable description.
-         *    @access private
-         */
-        function _describeObjectDifference($first, $second, $identical) {
-            if (! is_object($second)) {
-                return $this->_describeGenericDifference($first, $second);
-            }
-            return $this->_describeArrayDifference(
-                    get_object_vars($first),
-                    get_object_vars($second),
-                    $identical);
-        }
-        
-        /**
-         *    Find the first character position that differs
-         *    in two strings by binary chop.
-         *    @param string $first        First string.
-         *    @param string $second       String to compare with.
-         *    @return integer             Position of first differing
-         *                                character.
-         *    @access private
-         */
-        function _stringDiffersAt($first, $second) {
-            if (! $first || ! $second) {
-                return 0;
-            }
-            if (strlen($first) < strlen($second)) {
-                list($first, $second) = array($second, $first);
-            }
-            $position = 0;
-            $step = strlen($first);
-            while ($step > 1) {
-                $step = (integer)(($step + 1)/2);
-                if (strncmp($first, $second, $position + $step) == 0) {
-                    $position += $step;
-                }
-            }
-            return $position;
-        }
-        
-        /**
-         *    Sends a formatted dump of a variable to a string.
-         *    @param mixed $variable    Variable to display.
-         *    @return string            Output from print_r().
-         *    @access public
-         *    @static
-         */
-        function dump($variable) {
-            ob_start();
-            print_r($variable);
-            $formatted = ob_get_contents();
-            ob_end_clean();
-            return $formatted;
-        }
-        
-        /**
-         *    Extracts the last assertion that was not within
-         *    Simpletest itself. The name must start with "assert".
-         *    @param array $stack      List of stack frames.
-         *    @param string $format    String formatting.
-         *    @param string $prefix    Prefix of method to search for.
-         *    @access public
-         *    @static
-         */
-        function getFormattedAssertionLine($stack, $format = '%d', $prefix = 'assert') {
-            foreach ($stack as $frame) {
-                if (substr(@dirname($frame['file']), -10) == 'simpletest') {
-                    continue;
-                }
-                if (strncmp($frame['function'], $prefix, strlen($prefix)) == 0) {
-                    return sprintf($format, $frame['line']);
-                }
-            }
-            return '';
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/errors.php b/htdocs/TESTS/simpletest/errors.php
deleted file mode 100644 (file)
index 52257d1..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: errors.php,v 1.12 2004/08/08 13:16:00 lastcraft Exp $
-     */
-    /** @ignore - PHP5 compatibility fix. */
-    if (! defined('E_STRICT')) {
-        define('E_STRICT', 2048);
-    }
-    
-    /**
-     *    Singleton error queue used to record trapped
-     *    errors.
-        *        @package      SimpleTest
-        *        @subpackage   UnitTester
-     */
-    class SimpleErrorQueue {
-        var $_queue;
-        
-        /**
-         *    Starts with an empty queue.
-         *    @access public
-         */
-        function SimpleErrorQueue() {
-            $this->clear();
-        }
-        
-        /**
-         *    Adds an error to the front of the queue.
-         *    @param $severity        PHP error code.
-         *    @param $message         Text of error.
-         *    @param $filename        File error occoured in.
-         *    @param $line            Line number of error.
-         *    @param $super_globals   Hash of PHP super global arrays.
-         *    @access public
-         */
-        function add($severity, $message, $filename, $line, $super_globals) {
-            array_push(
-                    $this->_queue,
-                    array($severity, $message, $filename, $line, $super_globals));
-        }
-        
-        /**
-         *    Pulls the earliest error from the queue.
-         *    @return     False if none, or a list of error
-         *                information. Elements are: severity
-         *                as the PHP error code, the error message,
-         *                the file with the error, the line number
-         *                and a list of PHP super global arrays.
-         *    @access public
-         */
-        function extract() {
-            if (count($this->_queue)) {
-                return array_shift($this->_queue);
-            }
-            return false;
-        }
-        
-        /**
-         *    Discards the contents of the error queue.
-         *    @access public
-         */
-        function clear() {
-            $this->_queue = array();
-        }
-        
-        /**
-         *    Tests to see if the queue is empty.
-         *    @return        True if empty.
-         */
-        function isEmpty() {
-            return (count($this->_queue) == 0);
-        }
-        
-        /**
-         *    Global access to a single error queue.
-         *    @return        Global error queue object.
-         *    @access public
-         *    @static
-         */
-        function &instance() {
-            static $queue = false;
-            if (! $queue) {
-                $queue = new SimpleErrorQueue();
-            }
-            return $queue;
-        }
-        
-        /**
-         *    Converst an error code into it's string
-         *    representation.
-         *    @param $severity  PHP integer error code.
-         *    @return           String version of error code.
-         *    @access public
-         *    @static
-         */
-        function getSeverityAsString($severity) {
-            static $map = array(
-                    E_STRICT => 'E_STRICT',
-                    E_ERROR => 'E_ERROR',
-                    E_WARNING => 'E_WARNING',
-                    E_PARSE => 'E_PARSE',
-                    E_NOTICE => 'E_NOTICE',
-                    E_CORE_ERROR => 'E_CORE_ERROR',
-                    E_CORE_WARNING => 'E_CORE_WARNING',
-                    E_COMPILE_ERROR => 'E_COMPILE_ERROR',
-                    E_COMPILE_WARNING => 'E_COMPILE_WARNING',
-                    E_USER_ERROR => 'E_USER_ERROR',
-                    E_USER_WARNING => 'E_USER_WARNING',
-                    E_USER_NOTICE => 'E_USER_NOTICE');
-            return $map[$severity];
-        }
-    }
-    
-    /**
-     *    Error handler that simply stashes any errors into the global
-     *    error queue. Simulates the existing behaviour with respect to
-     *    logging errors, but this feature may be removed in future.
-     *    @param $severity        PHP error code.
-     *    @param $message         Text of error.
-     *    @param $filename        File error occoured in.
-     *    @param $line            Line number of error.
-     *    @param $super_globals   Hash of PHP super global arrays.
-     *    @static
-     *    @access public
-     */
-    function simpleTestErrorHandler($severity, $message, $filename, $line, $super_globals) {
-        restore_error_handler();
-        if (ini_get('log_errors')) {
-            $label = SimpleErrorQueue::getSeverityAsString($severity);
-            error_log("$label: $message in $filename on line $line");
-        }
-        if ($severity = $severity & error_reporting()) {
-            $queue = &SimpleErrorQueue::instance();
-            $queue->add($severity, $message, $filename, $line, $super_globals);
-        }
-        set_error_handler('simpleTestErrorHandler');
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/expectation.php b/htdocs/TESTS/simpletest/expectation.php
deleted file mode 100644 (file)
index 9487491..0000000
+++ /dev/null
@@ -1,571 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: expectation.php,v 1.31 2004/08/10 00:05:26 lastcraft Exp $
-     */
-     
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/dumper.php');
-    require_once(dirname(__FILE__) . '/options.php');
-    /**#@-*/
-    
-    /**
-     *    Assertion that can display failure information.
-     *    Also includes various helper methods.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     *    @abstract
-     */
-    class SimpleExpectation {
-        var $_dumper;
-        var $_message;
-        
-        /**
-         *    Creates a dumper for displaying values and sets
-         *    the test message.
-         *    @param string $message    Customised message on failure.
-         */
-        function SimpleExpectation($message = '%s') {
-            $this->_dumper = &new SimpleDumper();
-            $this->_message = $message;
-        }
-        
-        /**
-         *    Tests the expectation. True if correct.
-         *    @param mixed $compare        Comparison value.
-         *    @return boolean              True if correct.
-         *    @access public
-         *    @abstract
-         */
-        function test($compare) {
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         *    @abstract
-         */
-        function testMessage($compare) {
-        }
-        
-        /**
-         *    Overlays the generated message onto the stored user
-         *    message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function overlayMessage($compare) {
-            return sprintf($this->_message, $this->testMessage($compare));
-        }
-        
-        /**
-         *    Accessor for the dumper.
-         *    @return SimpleDumper    Current value dumper.
-         *    @access protected
-         */
-        function &_getDumper() {
-            return $this->_dumper;
-        }
-    }
-    
-    /**
-     *    Test for equality.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class EqualExpectation extends SimpleExpectation {
-        var $_value;
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param mixed $value        Test value to match.
-         *    @param string $message     Customised message on failure.
-         *    @access public
-         */
-        function EqualExpectation($value, $message = '%s') {
-            $this->SimpleExpectation($message);
-            $this->_value = $value;
-        }
-        
-        /**
-         *    Tests the expectation. True if it matches the
-         *    held value.
-         *    @param mixed $compare        Comparison value.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return (($this->_value == $compare) && ($compare == $this->_value));
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            if ($this->test($compare)) {
-                return "Equal expectation [" . $this->_dumper->describeValue($this->_value) . "]";
-            } else {
-                return "Equal expectation fails " .
-                        $this->_dumper->describeDifference($this->_value, $compare);
-            }
-        }
-
-        /**
-         *    Accessor for comparison value.
-         *    @return mixed       Held value to compare with.
-         *    @access protected
-         */
-        function _getValue() {
-            return $this->_value;
-        }
-    }
-    
-    /**
-     *    Test for inequality.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NotEqualExpectation extends EqualExpectation {
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param mixed $value       Test value to match.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function NotEqualExpectation($value, $message = '%s') {
-            $this->EqualExpectation($value, $message);
-        }
-        
-        /**
-         *    Tests the expectation. True if it differs from the
-         *    held value.
-         *    @param mixed $compare        Comparison value.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return ! parent::test($compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            if ($this->test($compare)) {
-                return "Not equal expectation passes " .
-                        $dumper->describeDifference($this->_getValue(), $compare);
-            } else {
-                return "Not equal expectation fails [" .
-                        $dumper->describeValue($this->_getValue()) .
-                        "] matches";
-            }
-        }
-    }
-    
-    /**
-     *    Test for identity.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class IdenticalExpectation extends EqualExpectation {
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param mixed $value       Test value to match.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function IdenticalExpectation($value, $message = '%s') {
-            $this->EqualExpectation($value, $message);
-        }
-        
-        /**
-         *    Tests the expectation. True if it exactly
-         *    matches the held value.
-         *    @param mixed $compare        Comparison value.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return SimpleTestCompatibility::isIdentical($this->_getValue(), $compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            if ($this->test($compare)) {
-                return "Identical expectation [" . $dumper->describeValue($this->_getValue()) . "]";
-            } else {
-                return "Identical expectation [" . $dumper->describeValue($this->_getValue()) .
-                        "] fails with [" .
-                        $this->_dumper->describeValue($compare) . "] " .
-                        $this->_dumper->describeDifference(
-                                $this->_getValue(),
-                                $compare,
-                                TYPE_MATTERS);
-            }
-        }
-    }
-    
-    /**
-     *    Test for non-identity.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NotIdenticalExpectation extends IdenticalExpectation {
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param mixed $value        Test value to match.
-         *    @param string $message     Customised message on failure.
-         *    @access public
-         */
-        function NotIdenticalExpectation($value, $message = '%s') {
-            $this->IdenticalExpectation($value, $message);
-        }
-        
-        /**
-         *    Tests the expectation. True if it differs from the
-         *    held value.
-         *    @param mixed $compare        Comparison value.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return ! parent::test($compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            if ($this->test($compare)) {
-                return "Not identical expectation passes " .
-                        $dumper->describeDifference($this->_getValue(), $compare, TYPE_MATTERS);
-            } else {
-                return "Not identical expectation [" . $dumper->describeValue($this->_getValue()) . "] matches";
-            }
-        }
-    }
-    
-    /**
-     *    Test for a pattern using Perl regex rules.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class WantedPatternExpectation extends SimpleExpectation {
-        var $_pattern;
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param string $pattern    Pattern to search for.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function WantedPatternExpectation($pattern, $message = '%s') {
-            $this->SimpleExpectation($message);
-            $this->_pattern = $pattern;
-        }
-        
-        /**
-         *    Accessor for the pattern.
-         *    @return string       Perl regex as string.
-         *    @access protected
-         */
-        function _getPattern() {
-            return $this->_pattern;
-        }
-        
-        /**
-         *    Tests the expectation. True if the Perl regex
-         *    matches the comparison value.
-         *    @param string $compare        Comparison value.
-         *    @return boolean               True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return (boolean)preg_match($this->_getPattern(), $compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            if ($this->test($compare)) {
-                return $this->_decribePatternMatch($this->_getPattern(), $compare);
-            } else {
-                $dumper = &$this->_getDumper();
-                return "Pattern [" . $this->_getPattern() .
-                        "] not detected in [" .
-                        $dumper->describeValue($compare) . "]";
-            }
-        }
-        
-        /**
-         *    Describes a pattern match including the string
-         *    found and it's position.
-         *    @param string $pattern        Regex to match against.
-         *    @param string $subject        Subject to search.
-         *    @access protected
-         */
-        function _decribePatternMatch($pattern, $subject) {
-            preg_match($pattern, $subject, $matches);
-            $position = strpos($subject, $matches[0]);
-            $dumper = &$this->_getDumper();
-            return "Pattern [$pattern] detected at [$position] in [" .
-                    $dumper->describeValue($subject) . "] as [" .
-                    $matches[0] . "] in region [" .
-                    $dumper->clipString($subject, 40, $position) . "]";
-        }
-    }
-    
-    /**
-     *    Fail if a pattern is detected within the
-     *    comparison.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class UnwantedPatternExpectation extends WantedPatternExpectation {
-        
-        /**
-         *    Sets the reject pattern
-         *    @param string $pattern    Pattern to search for.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function UnwantedPatternExpectation($pattern, $message = '%s') {
-            $this->WantedPatternExpectation($pattern, $message);
-        }
-        
-        /**
-         *    Tests the expectation. False if the Perl regex
-         *    matches the comparison value.
-         *    @param string $compare        Comparison value.
-         *    @return boolean               True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return ! parent::test($compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param string $compare      Comparison value.
-         *    @return string              Description of success
-         *                                or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            if ($this->test($compare)) {
-                $dumper = &$this->_getDumper();
-                return "Pattern [" . $this->_getPattern() .
-                        "] not detected in [" .
-                        $dumper->describeValue($compare) . "]";
-            } else {
-                return $this->_decribePatternMatch($this->_getPattern(), $compare);
-            }
-        }
-    }
-    
-    /**
-     *    Tests either type or class name if it's an object.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class IsAExpectation extends SimpleExpectation {
-        var $_type;
-        
-        /**
-         *    Sets the type to compare with.
-         *    @param string $type       Type or class name.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function IsAExpectation($type, $message = '%s') {
-            $this->SimpleExpectation($message);
-            $this->_type = $type;
-        }
-        
-        /**
-         *    Accessor for type to check against.
-         *    @return string    Type or class name.
-         *    @access protected
-         */
-        function getType() {
-            return $this->_type;
-        }
-        
-        /**
-         *    Tests the expectation. True if the type or
-         *    class matches the string value.
-         *    @param string $compare        Comparison value.
-         *    @return boolean               True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            if (is_object($compare)) {
-                return SimpleTestCompatibility::isA($compare, $this->_type);
-            } else {
-                return (strtolower(gettype($compare)) == $this->_canonicalType($this->_type));
-            }
-        }
-
-        /**
-         *    Coerces type name into a gettype() match.
-         *    @param string $type        User type.
-         *    @return string             Simpler type.
-         *    @access private
-         */
-        function _canonicalType($type) {
-            $type = strtolower($type);
-            $map = array(
-                    'bool' => 'boolean',
-                    'float' => 'double',
-                    'real' => 'double',
-                    'int' => 'integer');
-            if (isset($map[$type])) {
-                $type = $map[$type];
-            }
-            return $type;
-        }
-
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            return "Value [" . $dumper->describeValue($compare) .
-                    "] should be type [" . $this->_type . "]";
-        }
-    }
-    
-    /**
-     *    Tests either type or class name if it's an object.
-     *    Will succeed if the type does not match.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NotAExpectation extends IsAExpectation {
-        var $_type;
-        
-        /**
-         *    Sets the type to compare with.
-         *    @param string $type       Type or class name.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function NotAExpectation($type, $message = '%s') {
-            $this->IsAExpectation($type, $message);
-        }
-        
-        /**
-         *    Tests the expectation. False if the type or
-         *    class matches the string value.
-         *    @param string $compare        Comparison value.
-         *    @return boolean               True if different.
-         *    @access public
-         */
-        function test($compare) {
-            return ! parent::test($compare);
-        }
-
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            return "Value [" . $dumper->describeValue($compare) .
-                    "] should not be type [" . $this->_getType() . "]";
-        }
-    }
-
-    /**
-     *    Tests for existance of a method in an object
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class MethodExistsExpectation extends SimpleExpectation {
-        var $_method;
-        
-        /**
-         *    Sets the value to compare against.
-         *    @param string $method     Method to check.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         *    @return void
-         */
-        function MethodExistsExpectation($method, $message = '%s') {
-            $this->SimpleExpectation($message);
-            $this->_method = &$method;
-        }
-        
-        /**
-         *    Tests the expectation. True if the method exists in the test object.
-         *    @param string $compare        Comparison method name.
-         *    @return boolean               True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            return (boolean)(is_object($compare) && method_exists($compare, $this->_method));
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-                       $dumper = &$this->_getDumper();
-                       if (! is_object($compare)) {
-                           return 'No method on non-object [' . $dumper->describeValue($compare) . ']';
-                       }
-                       $method = $this->_method;
-                       return "Object [" . $dumper->describeValue($compare) .
-                                       "] should contain method [$method]";
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/extensions/pear_test_case.php b/htdocs/TESTS/simpletest/extensions/pear_test_case.php
deleted file mode 100644 (file)
index fccdfc8..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-<?php
-    /**
-     * adapter for SimpleTest to use PEAR PHPUnit test cases
-     * @package        SimpleTest
-     * @subpackage Extensions
-     * @version        $Id: pear_test_case.php,v 1.3 2004/04/23 03:11:56 jsweat Exp $
-     */
-    
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once dirname(__FILE__).DIRECTORY_SEPARATOR
-       .'..'.DIRECTORY_SEPARATOR .'unit_tester.php';
-    require_once dirname(__FILE__).DIRECTORY_SEPARATOR
-            .'..'.DIRECTORY_SEPARATOR .'expectation.php';
-       /**#@-*/
-   
-    /**
-     *    Adapter for PEAR PHPUnit test case to allow
-     *    legacy PEAR test cases to be used with SimpleTest.
-     *    @package      SimpleTest
-     *    @subpackage   Extensions
-     */
-    class PHPUnit_TestCase extends SimpleTestCase {
-        var $_loosely_typed;
-        
-        /**
-         *    Constructor. Sets the test name.
-         *    @param $label        Test name to display.
-         *    @public
-         */
-        function PHPUnit_TestCase($label = false) {
-            $this->SimpleTestCase($label);
-            $this->_loosely_typed = false;
-        }
-        
-        /**
-         *    Will test straight equality if set to loose
-         *    typing, or identity if not.
-         *    @param $first          First value.
-         *    @param $second         Comparison value.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertEquals($first, $second, $message = "%s", $delta = 0) {
-            if ($this->_loosely_typed) {
-                $expectation = &new EqualExpectation($first);
-            } else {
-                $expectation = &new IdenticalExpectation($first);
-            }
-            $this->assertExpectation($expectation, $second, $message);
-        }
-        
-        /**
-         *    Passes if the value tested is not null.
-         *    @param $value          Value to test against.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertNotNull($value, $message = "%s") {
-            parent::assertTrue(isset($value), $message);
-        }
-        
-        /**
-         *    Passes if the value tested is null.
-         *    @param $value          Value to test against.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertNull($value, $message = "%s") {
-            parent::assertTrue(!isset($value), $message);
-        }
-        
-        /**
-         *    In PHP5 the identity test tests for the same
-         *    object. THis is a reference test in PHP4.
-         *    @param $first          First object handle.
-         *    @param $second         Hopefully the same handle.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertSame($first, $second, $message = "%s") {
-            $this->assertExpectation(new IdenticalExpectation($first), $second, $message);
-        }
-        
-        /**
-         *    In PHP5 the identity test tests for the same
-         *    object. THis is a reference test in PHP4.
-         *    @param $first          First object handle.
-         *    @param $second         Hopefully a different handle.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertNotSame($first, $second, $message = "%s") {
-            $this->assertExpectation(new NotIdenticalExpectation($first), $second, $message);
-        }
-        
-        /**
-         *    Sends pass if the test condition resolves true,
-         *    a fail otherwise.
-         *    @param $condition      Condition to test true.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertTrue($condition, $message = "%s") {
-            parent::assertTrue($condition, $message);
-        }
-        
-        /**
-         *    Sends pass if the test condition resolves false,
-         *    a fail otherwise.
-         *    @param $condition      Condition to test false.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertFalse($condition, $message = "%s") {
-            parent::assertTrue(!$condition, $message);
-        }
-        
-        /**
-         *    Tests a regex match. Needs refactoring.
-         *    @param $pattern        Regex to match.
-         *    @param $subject        String to search in.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertRegExp($pattern, $subject, $message = "%s") {
-            $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    $subject,
-                    $message);
-        }
-        
-        /**
-         *    Tests the type of a value.
-         *    @param $value          Value to take type of.
-         *    @param $type           Hoped for type.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertType($value, $type, $message = "%s") {
-            parent::assertTrue(gettype($value) == strtolower($type), $message);
-        }
-        
-        /**
-         *    Sets equality operation to act as a simple equal
-         *    comparison only, allowing a broader range of
-         *    matches.
-         *    @param $loosely_typed     True for broader comparison.
-         *    @public
-         */
-        function setLooselyTyped($loosely_typed) {
-            $this->_loosely_typed = $loosely_typed;
-        }
-
-        /**
-         *    For progress indication during
-         *    a test amongst other things.
-         *    @return            Usually one.
-         *    @public
-         */
-        function countTestCases() {
-            return $this->getSize();
-        }
-        
-        /**
-         *    Accessor for name, normally just the class
-         *    name.
-         *    @public
-         */
-        function getName() {
-            return $this->getLabel();
-        }
-        
-        /**
-         *    Does nothing. For compatibility only.
-         *    @param $name        Dummy
-         *    @public
-         */
-        function setName($name) {
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/extensions/phpunit_test_case.php b/htdocs/TESTS/simpletest/extensions/phpunit_test_case.php
deleted file mode 100644 (file)
index a0954d8..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-<?php
-    /**
-     * adapter for SimpleTest to use PHPUnit test cases
-     * @package        SimpleTest
-     * @subpackage Extensions
-     * @version        $Id: phpunit_test_case.php,v 1.3 2004/04/23 03:11:56 jsweat Exp $
-     */
-    
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once dirname(__FILE__).DIRECTORY_SEPARATOR
-            .'..'.DIRECTORY_SEPARATOR . 'unit_tester.php';
-    require_once dirname(__FILE__).DIRECTORY_SEPARATOR
-            .'..'.DIRECTORY_SEPARATOR . 'expectation.php';
-    /**#@-*/
-    
-    /**
-     *    Adapter for sourceforge PHPUnit test case to allow
-     *    legacy test cases to be used with SimpleTest.
-     *    @package             SimpleTest
-     *    @subpackage   Extensions
-     */
-    class TestCase extends SimpleTestCase {
-        
-        /**
-         *    Constructor. Sets the test name.
-         *    @param $label        Test name to display.
-         *    @public
-         */
-        function TestCase($label) {
-            $this->SimpleTestCase($label);
-        }
-        
-        /**
-         *    Sends pass if the test condition resolves true,
-         *    a fail otherwise.
-         *    @param $condition      Condition to test true.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assert($condition, $message = false) {
-            parent::assertTrue($condition, $message);
-        }
-        
-        /**
-         *    Will test straight equality if set to loose
-         *    typing, or identity if not.
-         *    @param $first          First value.
-         *    @param $second         Comparison value.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertEquals($first, $second, $message = false) {
-            $this->assertExpectation(
-                    new EqualExpectation($first),
-                    $second,
-                    $message);
-        }
-        
-        /**
-         *    Will test straight equality if set to loose
-         *    typing, or identity if not.
-         *    @param $first          First value.
-         *    @param $second         Comparison value.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertEqualsMultilineStrings($first, $second, $message = false) {
-            $this->assertExpectation(
-                    new EqualExpectation($first),
-                    $second,
-                    $message);
-        }                             
-        
-        /**
-         *    Tests a regex match.
-         *    @param $pattern        Regex to match.
-         *    @param $subject        String to search in.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function assertRegexp($pattern, $subject, $message = false) {
-            $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    $subject,
-                    $message);
-        }
-        
-        /**
-         *    Sends an error which we interpret as a fail
-         *    with a different message for compatibility.
-         *    @param $message        Message to display.
-         *    @public
-         */
-        function error($message) {
-            parent::assertTrue(false, "Error triggered [$message]");
-        }
-         
-        /**
-         *    Accessor for name.
-         *    @public
-         */
-       function name() {
-            return $this->getLabel();
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/form.php b/htdocs/TESTS/simpletest/form.php
deleted file mode 100644 (file)
index e16e9e0..0000000
+++ /dev/null
@@ -1,489 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest.
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: form.php,v 1.4 2004/08/19 00:05:52 lastcraft Exp $
-     */
-     
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once(dirname(__FILE__) . '/tag.php');
-    /**#@-*/
-   
-    /**
-     *    Form tag class to hold widget values.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleForm {
-        var $_method;
-        var $_action;
-        var $_default_target;
-        var $_id;
-        var $_buttons;
-        var $_images;
-        var $_widgets;
-        
-        /**
-         *    Starts with no held controls/widgets.
-         *    @param SimpleTag $tag        Form tag to read.
-         *    @param SimpleUrl $url        Location of holding page.
-         */
-        function SimpleForm($tag, $url) {
-            $this->_method = $tag->getAttribute('method');
-            $this->_action = $this->_createAction($tag->getAttribute('action'), $url);
-            $this->_default_target = false;
-            $this->_id = $tag->getAttribute('id');
-            $this->_buttons = array();
-            $this->_images = array();
-            $this->_widgets = array();
-        }
-        
-        /**
-         *    Sets the frame target within a frameset.
-         *    @param string $frame        Name of frame.
-         *    @access public
-         */
-        function setDefaultTarget($frame) {
-            $this->_default_target = $frame;
-        }
-        
-        /**
-         *    Accessor for form action.
-         *    @return string           Either get or post.
-         *    @access public
-         */
-        function getMethod() {
-            return ($this->_method ? strtolower($this->_method) : 'get');
-        }
-        
-        /**
-         *    Combined action attribute with current location
-         *    to get an absolute form target.
-         *    @param string $action    Action attribute from form tag.
-         *    @param SimpleUrl $base   Page location.
-         *    @return SimpleUrl        Absolute form target.
-         */
-        function _createAction($action, $base) {
-            if ($action === false) {
-                return $base;
-            }
-            if ($action === true) {
-                $url = new SimpleUrl('');
-            } else {
-                $url = new SimpleUrl($action);
-            }
-            return $url->makeAbsolute($base);
-        }
-        
-        /**
-         *    Absolute URL of the target.
-         *    @return SimpleUrl           URL target.
-         *    @access public
-         */
-        function getAction() {
-            $url = $this->_action;
-            if ($this->_default_target && ! $url->getTarget()) {
-                $url->setTarget($this->_default_target);
-            }
-            return $url;
-        }
-        
-        /**
-         *    ID field of form for unique identification.
-         *    @return string           Unique tag ID.
-         *    @access public
-         */
-        function getId() {
-            return $this->_id;
-        }
-        
-        /**
-         *    Adds a tag contents to the form.
-         *    @param SimpleWidget $tag        Input tag to add.
-         *    @access public
-         */
-        function addWidget($tag) {
-            if (strtolower($tag->getAttribute('type')) == 'submit') {
-                $this->_buttons[] = &$tag;
-            } elseif (strtolower($tag->getAttribute('type')) == 'image') {
-                $this->_images[] = &$tag;
-            } else {
-                if ($tag->getName()) {
-                    $this->_setWidget($tag);
-                }
-            }
-        }
-        
-        /**
-         *    Sets the widget into the form, grouping radio
-         *    buttons if any.
-         *    @param SimpleWidget $tag   Incoming form control.
-         *    @access private
-         */
-        function _setWidget($tag) {
-            if (strtolower($tag->getAttribute('type')) == 'radio') {
-                $this->_addRadioButton($tag);
-            } elseif (strtolower($tag->getAttribute('type')) == 'checkbox') {
-                $this->_addCheckbox($tag);
-            } else {
-                $this->_widgets[$tag->getName()] = &$tag;
-            }
-        }
-        
-        /**
-         *    Adds a radio button, building a group if necessary.
-         *    @param SimpleRadioButtonTag $tag   Incoming form control.
-         *    @access private
-         */
-        function _addRadioButton($tag) {
-            if (! isset($this->_widgets[$tag->getName()])) {
-                $this->_widgets[$tag->getName()] = &new SimpleRadioGroup();
-            }
-            $this->_widgets[$tag->getName()]->addWidget($tag);
-        }
-        
-        /**
-         *    Adds a checkbox, making it a group on a repeated name.
-         *    @param SimpleCheckboxTag $tag   Incoming form control.
-         *    @access private
-         */
-        function _addCheckbox($tag) {
-            if (! isset($this->_widgets[$tag->getName()])) {
-                $this->_widgets[$tag->getName()] = &$tag;
-            } elseif (! SimpleTestCompatibility::isA($this->_widgets[$tag->getName()], 'SimpleCheckboxGroup')) {
-                $previous = &$this->_widgets[$tag->getName()];
-                $this->_widgets[$tag->getName()] = &new SimpleCheckboxGroup();
-                $this->_widgets[$tag->getName()]->addWidget($previous);
-                $this->_widgets[$tag->getName()]->addWidget($tag);
-            } else {
-                $this->_widgets[$tag->getName()]->addWidget($tag);
-            }
-        }
-        
-        /**
-         *    Extracts current value from form.
-         *    @param string $name        Keyed by widget name.
-         *    @return string             Value as string or null
-         *                               if not set.
-         *    @access public
-         */
-        function getValue($name) {
-            if (isset($this->_widgets[$name])) {
-                return $this->_widgets[$name]->getValue();
-            }
-            foreach ($this->_buttons as $button) {
-                if ($button->getName() == $name) {
-                    return $button->getValue();
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Extracts current value from form by the ID.
-         *    @param string/integer $id  Keyed by widget ID attribute.
-         *    @return string             Value as string or null
-         *                               if not set.
-         *    @access public
-         */
-        function getValueById($id) {
-            foreach ($this->_widgets as $widget) {
-                if ($widget->getAttribute('id') == $id) {
-                    return $widget->getValue();
-                }
-            }
-            foreach ($this->_buttons as $button) {
-                if ($button->getAttribute('id') == $id) {
-                    return $button->getValue();
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Sets a widget value within the form.
-         *    @param string $name     Name of widget tag.
-         *    @param string $value    Value to input into the widget.
-         *    @return boolean         True if value is legal, false
-         *                            otherwise. If the field is not
-         *                            present, nothing will be set.
-         *    @access public
-         */
-        function setField($name, $value) {
-            if (isset($this->_widgets[$name])) {
-                return $this->_widgets[$name]->setValue($value);
-            }
-            return false;
-        }
-         
-        /**
-         *    Sets a widget value within the form by using the ID.
-         *    @param string/integer $id   Name of widget tag.
-         *    @param string $value        Value to input into the widget.
-         *    @return boolean             True if value is legal, false
-         *                                otherwise. If the field is not
-         *                                present, nothing will be set.
-         *    @access public
-         */
-        function setFieldById($id, $value) {
-            foreach (array_keys($this->_widgets) as $name) {
-                if ($this->_widgets[$name]->getAttribute('id') == $id) {
-                    return $this->setField($name, $value);
-                }
-            }
-            return false;
-        }
-       
-        /**
-         *    Reads the current form values as a hash
-         *    of submitted parameters. Repeated parameters
-         *    appear as a list.
-         *    @return hash         Submitted values.
-         *    @access public
-         */
-        function getValues() {
-            $values = array();
-            foreach (array_keys($this->_widgets) as $name) {
-                $new = $this->_widgets[$name]->getValue();
-                if (is_string($new)) {
-                    $values[$name] = $new;
-                } elseif (is_array($new)) {
-                    $values[$name] = $new;
-                }
-            }
-            return $values;
-        }
-        
-        /**
-         *    Test to see if a form has a submit button with this
-         *    name attribute.
-         *    @param string $name        Name to look for.
-         *    @return boolean            True if present.
-         *    @access public
-         */
-        function hasSubmitName($name) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getName() == $name) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Test to see if a form has a submit button with this
-         *    value attribute.
-         *    @param string $label    Button label to search for.
-         *    @return boolean         True if present.
-         *    @access public
-         */
-        function hasSubmitLabel($label) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getLabel() == $label) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Test to see if a form has a submit button with this
-         *    ID attribute.
-         *    @param string $id      Button ID attribute to search for.
-         *    @return boolean        True if present.
-         *    @access public
-         */
-        function hasSubmitId($id) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getAttribute('id') == $id) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Test to see if a form has a submit button with this
-         *    name attribute.
-         *    @param string $label   Button alt attribute to search for
-         *                           or nearest equivalent.
-         *    @return boolean        True if present.
-         *    @access public
-         */
-        function hasImageLabel($label) {
-            foreach ($this->_images as $image) {
-                if ($image->getLabel() == $label) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Test to see if a form has a submittable image with this
-         *    field name.
-         *    @param string $name    Image name to search for.
-         *    @return boolean        True if present.
-         *    @access public
-         */
-        function hasImageName($name) {
-            foreach ($this->_images as $image) {
-                if ($image->getName() == $name) {
-                    return true;
-                }
-            }
-            return false;
-        }
-         
-        /**
-         *    Test to see if a form has a submittable image with this
-         *    ID attribute.
-         *    @param string $id      Button ID attribute to search for.
-         *    @return boolean        True if present.
-         *    @access public
-         */
-        function hasImageId($id) {
-            foreach ($this->_images as $image) {
-                if ($image->getAttribute('id') == $id) {
-                    return true;
-                }
-            }
-            return false;
-        }
-       
-        /**
-         *    Gets the submit values for a named button.
-         *    @param string $name    Button label to search for.
-         *    @return hash           Submitted values or false
-         *                           if there is no such button in the
-         *                           form.
-         *    @access public
-         */
-        function submitButtonByName($name) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getName() == $name) {
-                    return array_merge(
-                            $button->getSubmitValues(),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Gets the submit values for a named button.
-         *    @param string $label   Button label to search for.
-         *    @return hash           Submitted values or false
-         *                           if there is no such button in the
-         *                           form.
-         *    @access public
-         */
-        function submitButtonByLabel($label) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getLabel() == $label) {
-                    return array_merge(
-                            $button->getSubmitValues(),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Gets the submit values for a button identified by the ID.
-         *    @param string $id      Button ID attribute to search for.
-         *    @return hash           Submitted values or false
-         *                           if there is no such button in the
-         *                           form.
-         *    @access public
-         */
-        function submitButtonById($id) {
-            foreach ($this->_buttons as $button) {
-                if ($button->getAttribute('id') == $id) {
-                    return array_merge(
-                            $button->getSubmitValues(),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-         
-        /**
-         *    Gets the submit values for an image identified by the alt
-         *    tag or nearest equivalent.
-         *    @param string $label  Button label to search for.
-         *    @param integer $x     X-coordinate of click.
-         *    @param integer $y     Y-coordinate of click.
-         *    @return hash          Submitted values or false
-         *                          if there is no such button in the
-         *                          form.
-         *    @access public
-         */
-        function submitImageByLabel($label, $x, $y) {
-            foreach ($this->_images as $image) {
-                if ($image->getAttribute('alt') == $label) {
-                    return array_merge(
-                            $image->getSubmitValues($x, $y),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-         
-        /**
-         *    Gets the submit values for an image identified by the ID.
-         *    @param string $name   Image name to search for.
-         *    @param integer $x     X-coordinate of click.
-         *    @param integer $y     Y-coordinate of click.
-         *    @return hash          Submitted values or false
-         *                          if there is no such button in the
-         *                          form.
-         *    @access public
-         */
-        function submitImageByName($name, $x, $y) {
-            foreach ($this->_images as $image) {
-                if ($image->getName() == $name) {
-                    return array_merge(
-                            $image->getSubmitValues($x, $y),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-          
-        /**
-         *    Gets the submit values for an image identified by the ID.
-         *    @param string/integer $id  Button ID attribute to search for.
-         *    @param integer $x          X-coordinate of click.
-         *    @param integer $y          Y-coordinate of click.
-         *    @return hash               Submitted values or false
-         *                               if there is no such button in the
-         *                               form.
-         *    @access public
-         */
-        function submitImageById($id, $x, $y) {
-            foreach ($this->_images as $image) {
-                if ($image->getAttribute('id') == $id) {
-                    return array_merge(
-                            $image->getSubmitValues($x, $y),
-                            $this->getValues());            
-                }
-            }
-            return false;
-        }
-      
-        /**
-         *    Simply submits the form without the submit button
-         *    value. Used when there is only one button or it
-         *    is unimportant.
-         *    @return hash           Submitted values.
-         *    @access public
-         */
-        function submit() {
-            return $this->getValues();            
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/frames.php b/htdocs/TESTS/simpletest/frames.php
deleted file mode 100644 (file)
index b2811a0..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: frames.php,v 1.28 2004/08/18 23:10:19 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/page.php');
-    require_once(dirname(__FILE__) . '/user_agent.php');
-    /**#@-*/
-    
-    /**
-     *    A composite page. Wraps a frameset page and
-     *    adds subframes. The original page will be
-     *    mostly ignored. Implements the SimplePage
-     *    interface so as to be interchangeable.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleFrameset {
-        var $_frameset;
-        var $_frames;
-        var $_focus;
-        var $_names;
-        
-        /**
-         *    Stashes the frameset page. Will make use of the
-         *    browser to fetch the sub frames recursively.
-         *    @param SimplePage $page        Frameset page.
-         */
-        function SimpleFrameset(&$page) {
-            $this->_frameset = &$page;
-            $this->_frames = array();
-            $this->_focus = false;
-            $this->_names = array();
-        }
-        
-        /**
-         *    Adds a parsed page to the frameset.
-         *    @param SimplePage $page    Frame page.
-         *    @param string $name        Name of frame in frameset.
-         *    @access public
-         */
-        function addFrame(&$page, $name = false) {
-            $this->_frames[] = &$page;
-            if ($name) {
-                $this->_names[$name] = count($this->_frames) - 1;
-            }
-        }
-        
-        /**
-         *    Replaces existing frame with another. If the
-         *    frame is nested, then the call is passed down
-         *    one level.
-         *    @param array $path        Path of frame in frameset.
-         *    @param SimplePage $page   Frame source.
-         *    @access public
-         */
-        function setFrame($path, &$page) {
-            $name = array_shift($path);
-            if (isset($this->_names[$name])) {
-                $index = $this->_names[$name];
-            } else {
-                $index = $name - 1;
-            }
-            if (count($path) == 0) {
-                $this->_frames[$index] = &$page;
-                return;
-            }
-            $this->_frames[$index]->setFrame($path, $page);
-        }
-        
-        /**
-         *    Accessor for current frame focus. Will be
-         *    false if no frame has focus. Will have the nested
-         *    frame focus if any.
-         *    @return array     Labels or indexes of nested frames.
-         *    @access public
-         */
-        function getFrameFocus() {
-            if ($this->_focus === false) {
-                return array();
-            }
-            return array_merge(
-                    array($this->_getPublicNameFromIndex($this->_focus)),
-                    $this->_frames[$this->_focus]->getFrameFocus());
-        }
-        
-        /**
-         *    Turns an internal array index into the frames list
-         *    into a public name, or if none, then a one offset
-         *    index.
-         *    @param integer $subject    Internal index.
-         *    @return integer/string     Public name.
-         *    @access private
-         */
-        function _getPublicNameFromIndex($subject) {
-            foreach ($this->_names as $name => $index) {
-                if ($subject == $index) {
-                    return $name;
-                }
-            }
-            return $subject + 1;
-        }
-        
-        /**
-         *    Sets the focus by index. The integer index starts from 1.
-         *    If already focused and the target frame also has frames,
-         *    then the nested frame will be focused.
-         *    @param integer $choice    Chosen frame.
-         *    @return boolean           True if frame exists.
-         *    @access public
-         */
-        function setFrameFocusByIndex($choice) {
-            if (is_integer($this->_focus)) {
-                if ($this->_frames[$this->_focus]->hasFrames()) {
-                    return $this->_frames[$this->_focus]->setFrameFocusByIndex($choice);
-                }
-            }
-            if (($choice < 1) || ($choice > count($this->_frames))) {
-                return false;
-            }
-            $this->_focus = $choice - 1;
-            return true;
-        }
-        
-        /**
-         *    Sets the focus by name. If already focused and the
-         *    target frame also has frames, then the nested frame
-         *    will be focused.
-         *    @param string $name    Chosen frame.
-         *    @return boolean        True if frame exists.
-         *    @access public
-         */
-        function setFrameFocus($name) {
-            if (is_integer($this->_focus)) {
-                if ($this->_frames[$this->_focus]->hasFrames()) {
-                    return $this->_frames[$this->_focus]->setFrameFocus($name);
-                }
-            }
-            if (in_array($name, array_keys($this->_names))) {
-                $this->_focus = $this->_names[$name];
-                return true;
-            }
-            return false;
-        }
-        
-        /**
-         *    Clears the frame focus.
-         *    @access public
-         */
-        function clearFrameFocus() {
-            $this->_focus = false;
-            $this->_clearNestedFramesFocus();
-        }
-        
-        /**
-         *    Clears the frame focus for any nested frames.
-         *    @access private
-         */
-        function _clearNestedFramesFocus() {
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $this->_frames[$i]->clearFrameFocus();
-            }
-        }
-        
-        /**
-         *    Test for the presence of a frameset.
-         *    @return boolean        Always true.
-         *    @access public
-         */
-        function hasFrames() {
-            return true;
-        }
-        
-        /**
-         *    Accessor for frames information.
-         *    @return array/string      Recursive hash of frame URL strings.
-         *                              The key is either a numerical
-         *                              index or the name attribute.
-         *    @access public
-         */
-        function getFrames() {
-            $report = array();
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $report[$this->_getPublicNameFromIndex($i)] =
-                        $this->_frames[$i]->getFrames();
-            }
-            return $report;
-        }
-        
-        /**
-         *    Accessor for raw text of either all the pages or
-         *    the frame in focus.
-         *    @return string        Raw unparsed content.
-         *    @access public
-         */
-        function getRaw() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getRaw();
-            }
-            $raw = '';
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $raw .= $this->_frames[$i]->getRaw();
-            }
-            return $raw;
-        }
-        
-        /**
-         *    Accessor for last error.
-         *    @return string        Error from last response.
-         *    @access public
-         */
-        function getTransportError() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getTransportError();
-            }
-            return $this->_frameset->getTransportError();
-        }
-        
-        /**
-         *    Request method used to fetch this frame.
-         *    @return string      GET, POST or HEAD.
-         *    @access public
-         */
-        function getMethod() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getMethod();
-            }
-            return $this->_frameset->getMethod();
-        }
-        
-        /**
-         *    Original resource name.
-         *    @return SimpleUrl        Current url.
-         *    @access public
-         */
-        function getUrl() {
-            if (is_integer($this->_focus)) {
-                $url = $this->_frames[$this->_focus]->getUrl();
-                $url->setTarget($this->_getPublicNameFromIndex($this->_focus));
-            } else {
-                $url = $this->_frameset->getUrl();
-            }
-            return $url;
-        }
-        
-        /**
-         *    Original request data.
-         *    @return mixed              Sent content.
-         *    @access public
-         */
-        function getRequestData() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getRequestData();
-            }
-            return $this->_frameset->getRequestData();
-        }
-        
-        /**
-         *    Accessor for current MIME type.
-         *    @return string    MIME type as string; e.g. 'text/html'
-         *    @access public
-         */
-        function getMimeType() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getMimeType();
-            }
-            return $this->_frameset->getMimeType();
-        }
-        
-        /**
-         *    Accessor for last response code.
-         *    @return integer    Last HTTP response code received.
-         *    @access public
-         */
-        function getResponseCode() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getResponseCode();
-            }
-            return $this->_frameset->getResponseCode();
-        }
-        
-        /**
-         *    Accessor for last Authentication type. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Description of challenge type.
-         *    @access public
-         */
-        function getAuthentication() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getAuthentication();
-            }
-            return $this->_frameset->getAuthentication();
-        }
-        
-        /**
-         *    Accessor for last Authentication realm. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Name of security realm.
-         *    @access public
-         */
-        function getRealm() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getRealm();
-            }
-            return $this->_frameset->getRealm();
-        }
-        
-        /**
-         *    Accessor for outgoing header information.
-         *    @return string      Header block.
-         *    @access public
-         */
-        function getRequest() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getRequest();
-            }
-            return $this->_frameset->getRequest();
-        }
-        
-        /**
-         *    Accessor for raw header information.
-         *    @return string      Header block.
-         *    @access public
-         */
-        function getHeaders() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getHeaders();
-            }
-            return $this->_frameset->getHeaders();
-        }
-        
-        /**
-         *    Accessor for parsed title.
-         *    @return string     Title or false if no title is present.
-         *    @access public
-         */
-        function getTitle() {
-            return $this->_frameset->getTitle();
-        }
-        
-        /**
-         *    Accessor for a list of all fixed links.
-         *    @return array   List of urls with scheme of
-         *                    http or https and hostname.
-         *    @access public
-         */
-        function getAbsoluteUrls() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getAbsoluteUrls();
-            }
-            $urls = array();
-            foreach ($this->_frames as $frame) {
-                $urls = array_merge($urls, $frame->getAbsoluteUrls());
-            }
-            return array_values(array_unique($urls));
-        }
-        
-        /**
-         *    Accessor for a list of all relative links.
-         *    @return array      List of urls without hostname.
-         *    @access public
-         */
-        function getRelativeUrls() {
-            if (is_integer($this->_focus)) {
-                return $this->_frames[$this->_focus]->getRelativeUrls();
-            }
-            $urls = array();
-            foreach ($this->_frames as $frame) {
-                $urls = array_merge($urls, $frame->getRelativeUrls());
-            }
-            return array_values(array_unique($urls));
-        }
-        
-        /**
-         *    Accessor for URLs by the link label. Label will match
-         *    regardess of whitespace issues and case.
-         *    @param string $label    Text of link.
-         *    @return array           List of links with that label.
-         *    @access public
-         */
-        function getUrlsByLabel($label) {
-            if (is_integer($this->_focus)) {
-                return $this->_tagUrlsWithFrame(
-                        $this->_frames[$this->_focus]->getUrlsByLabel($label),
-                        $this->_focus);
-            }
-            $urls = array();
-            foreach ($this->_frames as $index => $frame) {
-                $urls = array_merge(
-                        $urls,
-                        $this->_tagUrlsWithFrame(
-                                    $frame->getUrlsByLabel($label),
-                                    $index));
-            }
-            return $urls;
-        }
-        
-        /**
-         *    Accessor for a URL by the id attribute. If in a frameset
-         *    then the first link found with that ID attribute is
-         *    returned only. Focus on a frame if you want one from
-         *    a specific part of the frameset.
-         *    @param string $id       Id attribute of link.
-         *    @return string          URL with that id.
-         *    @access public
-         */
-        function getUrlById($id) {
-            foreach ($this->_frames as $index => $frame) {
-                if ($url = $frame->getUrlById($id)) {
-                    if (! $url->gettarget()) {
-                        $url->setTarget($this->_getPublicNameFromIndex($index));
-                    }
-                    return $url;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Attaches the intended frame index to a list of URLs.
-         *    @param array $urls        List of SimpleUrls.
-         *    @param string $frame      Name of frame or index.
-         *    @return array             List of tagged URLs.
-         *    @access private
-         */
-        function _tagUrlsWithFrame($urls, $frame) {
-            $tagged = array();
-            foreach ($urls as $url) {
-                if (! $url->getTarget()) {
-                    $url->setTarget($this->_getPublicNameFromIndex($frame));
-                }
-                $tagged[] = $url;
-            }
-            return $tagged;
-        }
-        
-        /**
-         *    Finds a held form by button label. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $label       Button label, default 'Submit'.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitLabel($label) {
-            return $this->_findForm('getFormBySubmitLabel', $label);
-        }
-        
-        /**
-         *    Finds a held form by button label. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $name        Button name attribute.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitName($name) {
-            return $this->_findForm('getFormBySubmitName', $name);
-        }
-        
-        /**
-         *    Finds a held form by button id. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $id          Button ID attribute.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitId($id) {
-            return $this->_findForm('getFormBySubmitId', $id);
-        }
-        
-        /**
-         *    Finds a held form by image label. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $label       Usually the alt attribute.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageLabel($label) {
-            return $this->_findForm('getFormByImageLabel', $label);
-        }
-        
-        /**
-         *    Finds a held form by image button id. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $name        Image name.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageName($name) {
-            return $this->_findForm('getFormByImageName', $name);
-        }
-        
-        /**
-         *    Finds a held form by image button id. Will only
-         *    search correctly built forms. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $id          Image ID attribute.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageId($id) {
-            return $this->_findForm('getFormByImageId', $id);
-        }
-        
-        /**
-         *    Finds a held form by the form ID. A way of
-         *    identifying a specific form when we have control
-         *    of the HTML code. The first form found
-         *    either within the focused frame, or across frames,
-         *    will be the one returned.
-         *    @param string $id     Form label.
-         *    @return SimpleForm    Form object containing the matching ID.
-         *    @access public
-         */
-        function &getFormById($id) {
-            return $this->_findForm('getFormById', $id);
-        }
-        
-        /**
-         *    General form finder. Will search all the frames or
-         *    just the one in focus.
-         *    @param string $method    Method to use to find in a page.
-         *    @param string $attribute Label, name or ID.
-         *    @return SimpleForm    Form object containing the matching ID.
-         *    @access private         
-         */
-        function &_findForm($method, $attribute) {
-            if (is_integer($this->_focus)) {
-                return $this->_findFormInFrame(
-                        $this->_frames[$this->_focus],
-                        $this->_focus,
-                        $method,
-                        $attribute);
-            }
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $form = &$this->_findFormInFrame(
-                        $this->_frames[$i],
-                        $i,
-                        $method,
-                        $attribute);
-                if ($form) {
-                    return $form;
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a form in a page using a form finding method. Will
-         *    also tag the form with the frame name it belongs in.
-         *    @param SimplePage $page  Page content of frame.
-         *    @param integer $index    Internal frame representation.
-         *    @param string $method    Method to use to find in a page.
-         *    @param string $attribute Label, name or ID.
-         *    @return SimpleForm       Form object containing the matching ID.
-         *    @access private         
-         */
-        function &_findFormInFrame(&$page, $index, $method, $attribute) {
-            $form = &$this->_frames[$index]->$method($attribute);
-            if (isset($form)) {
-                $form->setDefaultTarget($this->_getPublicNameFromIndex($index));
-            }
-            return $form;
-        }
-        
-        /**
-         *    Sets a field on each form in which the field is
-         *    available.
-         *    @param string $name        Field name.
-         *    @param string $value       Value to set field to.
-         *    @return boolean            True if value is valid.
-         *    @access public
-         */
-        function setField($name, $value) {
-            if (is_integer($this->_focus)) {
-                $this->_frames[$this->_focus]->setField($name, $value);
-            } else {
-                for ($i = 0; $i < count($this->_frames); $i++) {
-                    $this->_frames[$i]->setField($name, $value);
-                }
-            }
-        }
-         
-        /**
-         *    Sets a field on the form in which the unique field is
-         *    available.
-         *    @param string/integer $id  Field ID attribute.
-         *    @param string $value       Value to set field to.
-         *    @return boolean            True if value is valid.
-         *    @access public
-         */
-        function setFieldById($id, $value) {
-            if (is_integer($this->_focus)) {
-                $this->_frames[$this->_focus]->setFieldById($id, $value);
-            } else {
-                for ($i = 0; $i < count($this->_frames); $i++) {
-                    $this->_frames[$i]->setFieldById($id, $value);
-                }
-            }
-        }
-       
-        /**
-         *    Accessor for a form element value within a frameset.
-         *    Finds the first match amongst the frames.
-         *    @param string $name        Field name.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getField($name) {
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $value = $this->_frames[$i]->getField($name);
-                if (isset($value)) {
-                    return $value;
-                }
-            }
-            return null;
-        }
-         
-        /**
-         *    Accessor for a form element value within a page.
-         *    Finds the first match.
-         *    @param string/integer $id  Field ID attribute.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getFieldById($id) {
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $value = $this->_frames[$i]->getFieldById($id);
-                if (isset($value)) {
-                    return $value;
-                }
-            }
-            return null;
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/http.php b/htdocs/TESTS/simpletest/http.php
deleted file mode 100644 (file)
index 8a6ea87..0000000
+++ /dev/null
@@ -1,872 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: http.php,v 1.94 2004/06/30 22:13:07 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/socket.php');
-    require_once(dirname(__FILE__) . '/url.php');
-    /**#@-*/
-    
-    /**
-     *    Cookie data holder. Cookie rules are full of pretty
-     *    arbitary stuff. I have used...
-     *    http://wp.netscape.com/newsref/std/cookie_spec.html
-     *    http://www.cookiecentral.com/faq/
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleCookie {
-        var $_host;
-        var $_name;
-        var $_value;
-        var $_path;
-        var $_expiry;
-        var $_is_secure;
-        
-        /**
-         *    Constructor. Sets the stored values.
-         *    @param string $name            Cookie key.
-         *    @param string $value           Value of cookie.
-         *    @param string $path            Cookie path if not host wide.
-         *    @param string $expiry          Expiry date as string.
-         *    @param boolean $is_secure      Currently ignored.
-         */
-        function SimpleCookie($name, $value = false, $path = false, $expiry = false, $is_secure = false) {
-            $this->_host = false;
-            $this->_name = $name;
-            $this->_value = $value;
-            $this->_path = ($path ? $this->_fixPath($path) : "/");
-            $this->_expiry = false;
-            if (is_string($expiry)) {
-                $this->_expiry = strtotime($expiry);
-            } elseif (is_integer($expiry)) {
-                $this->_expiry = $expiry;
-            }
-            $this->_is_secure = $is_secure;
-        }
-        
-        /**
-         *    Sets the host. The cookie rules determine
-         *    that the first two parts are taken for
-         *    certain TLDs and three for others. If the
-         *    new host does not match these rules then the
-         *    call will fail.
-         *    @param string $host       New hostname.
-         *    @return boolean           True if hostname is valid.
-         *    @access public
-         */
-        function setHost($host) {
-            if ($host = $this->_truncateHost($host)) {
-                $this->_host = $host;
-                return true;
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for the truncated host to which this
-         *    cookie applies.
-         *    @return string       Truncated hostname.
-         *    @access public
-         */
-        function getHost() {
-            return $this->_host;
-        }
-        
-        /**
-         *    Test for a cookie being valid for a host name.
-         *    @param string $host    Host to test against.
-         *    @return boolean        True if the cookie would be valid
-         *                           here.
-         */
-        function isValidHost($host) {
-            return ($this->_truncateHost($host) === $this->getHost());
-        }
-        
-        /**
-         *    Extracts just the domain part that determines a
-         *    cookie's host validity.
-         *    @param string $host    Host name to truncate.
-         *    @return string        Domain or false on a bad host.
-         *    @access private
-         */
-        function _truncateHost($host) {
-            if (preg_match('/[a-z\-]+\.(com|edu|net|org|gov|mil|int)$/i', $host, $matches)) {
-                return $matches[0];
-            } elseif (preg_match('/[a-z\-]+\.[a-z\-]+\.[a-z\-]+$/i', $host, $matches)) {
-                return $matches[0];
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for name.
-         *    @return string       Cookie key.
-         *    @access public
-         */
-        function getName() {
-            return $this->_name;
-        }
-        
-        /**
-         *    Accessor for value. A deleted cookie will
-         *    have an empty string for this.
-         *    @return string       Cookie value.
-         *    @access public
-         */
-        function getValue() {
-            return $this->_value;
-        }
-        
-        /**
-         *    Accessor for path.
-         *    @return string       Valid cookie path.
-         *    @access public
-         */
-        function getPath() {
-            return $this->_path;
-        }
-        
-        /**
-         *    Tests a path to see if the cookie applies
-         *    there. The test path must be longer or
-         *    equal to the cookie path.
-         *    @param string $path       Path to test against.
-         *    @return boolean           True if cookie valid here.
-         *    @access public
-         */
-        function isValidPath($path) {
-            return (strncmp(
-                    $this->_fixPath($path),
-                    $this->getPath(),
-                    strlen($this->getPath())) == 0);
-        }
-        
-        /**
-         *    Accessor for expiry.
-         *    @return string       Expiry string.
-         *    @access public
-         */
-        function getExpiry() {
-            if (! $this->_expiry) {
-                return false;
-            }
-            return gmdate("D, d M Y H:i:s", $this->_expiry) . " GMT";
-        }
-        
-        /**
-         *    Test to see if cookie is expired against
-         *    the cookie format time or timestamp.
-         *    Will give true for a session cookie.
-         *    @param integer/string $now  Time to test against. Result
-         *                                will be false if this time
-         *                                is later than the cookie expiry.
-         *                                Can be either a timestamp integer
-         *                                or a cookie format date.
-         *    @access public
-         */
-        function isExpired($now) {
-            if (! $this->_expiry) {
-                return true;
-            }
-            if (is_string($now)) {
-                $now = strtotime($now);
-            }
-            return ($this->_expiry < $now);
-        }
-        
-        /**
-         *    Ages the cookie by the specified number of
-         *    seconds.
-         *    @param integer $interval   In seconds.
-         *    @public
-         */
-        function agePrematurely($interval) {
-            if ($this->_expiry) {
-                $this->_expiry -= $interval;
-            }
-        }
-        
-        /**
-         *    Accessor for the secure flag.
-         *    @return boolean       True if cookie needs SSL.
-         *    @access public
-         */
-        function isSecure() {
-            return $this->_is_secure;
-        }
-        
-        /**
-         *    Adds a trailing and leading slash to the path
-         *    if missing.
-         *    @param string $path            Path to fix.
-         *    @access private
-         */
-        function _fixPath($path) {
-            if (substr($path, 0, 1) != '/') {
-                $path = '/' . $path;
-            }
-            if (substr($path, -1, 1) != '/') {
-                $path .= '/';
-            }
-            return $path;
-        }
-    }
-    
-    /**
-     *    Creates HTTP headers for the end point of
-     *    a HTTP request.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleRoute {
-        var $_url;
-        
-        /**
-         *    Sets the target URL.
-         *    @param SimpleUrl $url   URL as object.
-         *    @access public
-         */
-        function SimpleRoute($url) {
-            $this->_url = $url;
-        }
-        
-        /**
-         *    Resource name.
-         *    @return SimpleUrl        Current url.
-         *    @access protected
-         */
-        function getUrl() {
-            return $this->_url;
-        }
-        
-        /**
-         *    Creates the first line which is the actual request.
-         *    @param string $method   HTTP request method, usually GET.
-         *    @return string          Request line content.
-         *    @access protected
-         */
-        function _getRequestLine($method) {
-            return $method . ' ' . $this->_url->getPath() .
-                    $this->_url->getEncodedRequest() . ' HTTP/1.0';
-        }
-        
-        /**
-         *    Creates the host part of the request.
-         *    @return string          Host line content.
-         *    @access protected
-         */
-        function _getHostLine() {
-            $line = 'Host: ' . $this->_url->getHost();
-            if ($this->_url->getPort()) {
-                $line .= ':' . $this->_url->getPort();
-            }
-            return $line;
-        }
-        
-        /**
-         *    Opens a socket to the route.
-         *    @param string $method      HTTP request method, usually GET.
-         *    @param integer $timeout    Connection timeout.
-         *    @return SimpleSocket       New socket.
-         *    @access public
-         */
-        function &createConnection($method, $timeout) {
-            $default_port = ('https' == $this->_url->getScheme()) ? 443 : 80;
-            $socket = &$this->_createSocket(
-                    $this->_url->getScheme() ? $this->_url->getScheme() : 'http',
-                    $this->_url->getHost(),
-                    $this->_url->getPort() ? $this->_url->getPort() : $default_port,
-                    $timeout);
-            if (! $socket->isError()) {
-                $socket->write($this->_getRequestLine($method) . "\r\n");
-                $socket->write($this->_getHostLine() . "\r\n");
-                $socket->write("Connection: close\r\n");
-            }
-            return $socket;
-        }
-        
-        /**
-         *    Factory for socket.
-         *    @param string $scheme                   Protocol to use.
-         *    @param string $host                     Hostname to connect to.
-         *    @param integer $port                    Remote port.
-         *    @param integer $timeout                 Connection timeout.
-         *    @return SimpleSocket/SimpleSecureSocket New socket.
-         *    @access protected
-         */
-        function &_createSocket($scheme, $host, $port, $timeout) {
-            if (in_array($scheme, array('https'))) {
-                return new SimpleSecureSocket($host, $port, $timeout);
-            }
-            return new SimpleSocket($host, $port, $timeout);
-        }
-    }
-    
-    /**
-     *    Creates HTTP headers for the end point of
-     *    a HTTP request via a proxy server.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleProxyRoute extends SimpleRoute {
-        var $_proxy;
-        var $_username;
-        var $_password;
-        
-        /**
-         *    Stashes the proxy address.
-         *    @param SimpleUrl $url     URL as object.
-         *    @param string $proxy      Proxy URL.
-         *    @param string $username   Username for autentication.
-         *    @param string $password   Password for autentication.
-         *    @access public
-         */
-        function SimpleProxyRoute($url, $proxy, $username = false, $password = false) {
-            $this->SimpleRoute($url);
-            $this->_proxy = $proxy;
-            $this->_username = $username;
-            $this->_password = $password;
-        }
-        
-        /**
-         *    Creates the first line which is the actual request.
-         *    @param string $method   HTTP request method, usually GET.
-         *    @param SimpleUrl $url   URL as object.
-         *    @return string          Request line content.
-         *    @access protected
-         */
-        function _getRequestLine($method) {
-            $url = $this->getUrl();
-            $scheme = $url->getScheme() ? $url->getScheme() : 'http';
-            $port = $url->getPort() ? ':' . $url->getPort() : '';
-            return $method . ' ' . $scheme . '://' . $url->getHost() . $port .
-                    $url->getPath() . $url->getEncodedRequest() . ' HTTP/1.0';
-        }
-        
-        /**
-         *    Creates the host part of the request.
-         *    @param SimpleUrl $url   URL as object.
-         *    @return string          Host line content.
-         *    @access protected
-         */
-        function _getHostLine() {
-            $host = 'Host: ' . $this->_proxy->getHost();
-            $port = $this->_proxy->getPort() ? $this->_proxy->getPort() : 8080;
-            return "$host:$port";
-        }
-        
-        /**
-         *    Opens a socket to the route.
-         *    @param string $method       HTTP request method, usually GET.
-         *    @param integer $timeout     Connection timeout.
-         *    @return SimpleSocket        New socket.
-         *    @access public
-         */
-        function &createConnection($method, $timeout) {
-            $socket = &$this->_createSocket(
-                    $this->_proxy->getScheme() ? $this->_proxy->getScheme() : 'http',
-                    $this->_proxy->getHost(),
-                    $this->_proxy->getPort() ? $this->_proxy->getPort() : 8080,
-                    $timeout);
-            if (! $socket->isError()) {
-                $socket->write($this->_getRequestLine($method) . "\r\n");
-                $socket->write($this->_getHostLine() . "\r\n");
-                if ($this->_username && $this->_password) {
-                    $socket->write('Proxy-Authorization: Basic ' .
-                            base64_encode($this->_username . ':' . $this->_password) .
-                            "\r\n");
-                }
-                $socket->write("Connection: close\r\n");
-            }
-            return $socket;
-        }
-    }
-
-    /**
-     *    HTTP request for a web page. Factory for
-     *    HttpResponse object.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleHttpRequest {
-        var $_route;
-        var $_method;
-        var $_content;
-        var $_headers;
-        var $_cookies;
-        
-        /**
-         *    Saves the URL ready for fetching.
-         *    @param SimpleRoute $route   Request route.
-         *    @param string $method       HTTP request method,
-         *                                usually GET.
-         *    @param string $content      Content to send with request.
-         *    @access public
-         */
-        function SimpleHttpRequest(&$route, $method, $content = '') {
-            $this->_route = &$route;
-            $this->_method = $method;
-            $this->_content = $content;
-            $this->_headers = array();
-            $this->_cookies = array();
-        }
-        
-        /**
-         *    Fetches the content and parses the headers.
-         *    @param integer $timeout      Connection timeout.
-         *    @return SimpleHttpResponse   A response which may only have
-         *                                 an error.
-         *    @access public
-         */
-        function &fetch($timeout) {
-            $socket = &$this->_route->createConnection($this->_method, $timeout);
-            if ($socket->isError()) {
-                return $this->_createResponse($socket);
-            }
-            $this->_dispatchRequest($socket, $this->_method, $this->_content);
-            return $this->_createResponse($socket);
-        }
-        
-        /**
-         *    Sends the headers.
-         *    @param SimpleSocket $socket   Open socket.
-         *    @param string $method         HTTP request method,
-         *                                  usually GET.
-         *    @param string $content        Content to send with request.
-         *    @access protected
-         */
-        function _dispatchRequest(&$socket, $method, $content) {
-            if ($content) {
-                $socket->write("Content-Length: " . strlen($content) . "\r\n");
-                $socket->write("Content-Type: application/x-www-form-urlencoded\r\n");
-            }
-            foreach ($this->_headers as $header_line) {
-                $socket->write($header_line . "\r\n");
-            }
-            if (count($this->_cookies) > 0) {
-                $socket->write("Cookie: " . $this->_marshallCookies($this->_cookies) . "\r\n");
-            }
-            $socket->write("\r\n");
-            if ($content) {
-                $socket->write($content);
-            }
-        }
-        
-        /**
-         *    Adds a header line to the request.
-         *    @param string $header_line    Text of header line.
-         *    @access public
-         */
-        function addHeaderLine($header_line) {
-            $this->_headers[] = $header_line;
-        }
-        
-        /**
-         *    Adds a cookie to the request.
-         *    @param SimpleCookie $cookie   Additional cookie.
-         *    @access public
-         */
-        function setCookie($cookie) {
-            $this->_cookies[] = $cookie;
-        }
-        
-        /**
-         *    Serialises the cookie hash ready for
-         *    transmission.
-         *    @param hash $cookies     Parsed cookies.
-         *    @return array            Cookies in header form.
-         *    @access private
-         */
-        function _marshallCookies($cookies) {
-            $cookie_pairs = array();
-            foreach ($cookies as $cookie) {
-                $cookie_pairs[] = $cookie->getName() . "=" . $cookie->getValue();
-            }
-            return implode(";", $cookie_pairs);
-        }
-        
-        /**
-         *    Wraps the socket in a response parser.
-         *    @param SimpleSocket $socket   Responding socket.
-         *    @return SimpleHttpResponse    Parsed response object.
-         *    @access protected
-         */
-        function &_createResponse(&$socket) {
-            return new SimpleHttpResponse(
-                    $socket,
-                    $this->_method,
-                    $this->_route->getUrl(),
-                    $this->_content);
-        }
-    }
-    
-    /**
-     *    Request with data to send. Usually PUT or POST.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleHttpPostRequest extends SimpleHttpRequest {
-        
-        /**
-         *    Cretaes an HTML form request.
-         *    @param SimpleRoute $route   Request target.
-         *    @param array $parameters    Content to send.
-         *    @access public
-         */
-        function SimpleHttpPostRequest($route, $parameters) {
-            $this->SimpleHttpRequest($route, 'POST', $parameters);
-        }
-        
-        /**
-         *    Sends the headers.
-         *    @param SimpleSocket $socket   Open socket.
-         *    @param string $method         HTTP request method,
-         *                                  usually GET.
-         *    @param string $content        Content to send with request.
-         *    @access protected
-         */
-        function _dispatchRequest(&$socket, $method, $content) {
-            parent::_dispatchRequest(
-                    $socket,
-                    $method,
-                    SimpleUrl::encodeRequest($content));
-        }
-    }
-    
-    /**
-     *    Collection of header lines in the response.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleHttpHeaders {
-        var $_raw_headers;
-        var $_response_code;
-        var $_http_version;
-        var $_mime_type;
-        var $_location;
-        var $_cookies;
-        var $_authentication;
-        var $_realm;
-        
-        /**
-         *    Parses the incoming header block.
-         *    @param string $headers     Header block.
-         *    @access public
-         */
-        function SimpleHttpHeaders($headers) {
-            $this->_raw_headers = $headers;
-            $this->_response_code = false;
-            $this->_http_version = false;
-            $this->_mime_type = '';
-            $this->_location = false;
-            $this->_cookies = array();
-            $this->_authentication = false;
-            $this->_realm = false;
-            foreach (explode("\r\n", $headers) as $header_line) {
-                $this->_parseHeaderLine($header_line);
-            }
-        }
-        
-        /**
-         *    Accessor for parsed HTTP protocol version.
-         *    @return integer           HTTP error code.
-         *    @access public
-         */
-        function getHttpVersion() {
-            return $this->_http_version;
-        }
-        
-        /**
-         *    Accessor for raw header block.
-         *    @return string        All headers as raw string.
-         *    @access public
-         */
-        function getRaw() {
-            return $this->_raw_headers;
-        }
-        
-        /**
-         *    Accessor for parsed HTTP error code.
-         *    @return integer           HTTP error code.
-         *    @access public
-         */
-        function getResponseCode() {
-            return (integer)$this->_response_code;
-        }
-        
-        /**
-         *    Returns the redirected URL or false if
-         *    no redirection.
-         *    @return string      URL or false for none.
-         *    @access public
-         */
-        function getLocation() {
-            return $this->_location;
-        }
-        
-        /**
-         *    Test to see if the response is a valid redirect.
-         *    @return boolean       True if valid redirect.
-         *    @access public
-         */
-        function isRedirect() {
-            return in_array($this->_response_code, array(301, 302, 303, 307)) &&
-                    (boolean)$this->getLocation();
-        }
-        
-        /**
-         *    Test to see if the response is an authentication
-         *    challenge.
-         *    @return boolean       True if challenge.
-         *    @access public
-         */
-        function isChallenge() {
-            return ($this->_response_code == 401) &&
-                    (boolean)$this->_authentication &&
-                    (boolean)$this->_realm;
-        }
-        
-        /**
-         *    Accessor for MIME type header information.
-         *    @return string           MIME type.
-         *    @access public
-         */
-        function getMimeType() {
-            return $this->_mime_type;
-        }
-        
-        /**
-         *    Accessor for authentication type.
-         *    @return string        Type.
-         *    @access public
-         */
-        function getAuthentication() {
-            return $this->_authentication;
-        }
-        
-        /**
-         *    Accessor for security realm.
-         *    @return string        Realm.
-         *    @access public
-         */
-        function getRealm() {
-            return $this->_realm;
-        }
-        
-        /**
-         *    Accessor for any new cookies.
-         *    @return array       List of new cookies.
-         *    @access public
-         */
-        function getNewCookies() {
-            return $this->_cookies;
-        }
-
-        /**
-         *    Called on each header line to accumulate the held
-         *    data within the class.
-         *    @param string $header_line        One line of header.
-         *    @access protected
-         */
-        function _parseHeaderLine($header_line) {
-            if (preg_match('/HTTP\/(\d+\.\d+)\s+(.*?)\s/i', $header_line, $matches)) {
-                $this->_http_version = $matches[1];
-                $this->_response_code = $matches[2];
-            }
-            if (preg_match('/Content-type:\s*(.*)/i', $header_line, $matches)) {
-                $this->_mime_type = trim($matches[1]);
-            }
-            if (preg_match('/Location:\s*(.*)/i', $header_line, $matches)) {
-                $this->_location = trim($matches[1]);
-            }
-            if (preg_match('/Set-cookie:(.*)/i', $header_line, $matches)) {
-                $this->_cookies[] = $this->_parseCookie($matches[1]);
-            }
-            if (preg_match('/WWW-Authenticate:\s+(\S+)\s+realm=\"(.*?)\"/i', $header_line, $matches)) {
-                $this->_authentication = $matches[1];
-                $this->_realm = trim($matches[2]);
-            }
-        }
-        
-        /**
-         *    Parse the Set-cookie content.
-         *    @param string $cookie_line    Text after "Set-cookie:"
-         *    @return SimpleCookie          New cookie object.
-         *    @access private
-         */
-        function _parseCookie($cookie_line) {
-            $parts = explode(";", $cookie_line);
-            $cookie = array();
-            preg_match('/\s*(.*?)\s*=(.*)/', array_shift($parts), $cookie);
-            foreach ($parts as $part) {
-                if (preg_match('/\s*(.*?)\s*=(.*)/', $part, $matches)) {
-                    $cookie[$matches[1]] = trim($matches[2]);
-                }
-            }
-            return new SimpleCookie(
-                    $cookie[1],
-                    trim($cookie[2]),
-                    isset($cookie["path"]) ? $cookie["path"] : "",
-                    isset($cookie["expires"]) ? $cookie["expires"] : false);
-        }
-    }
-    
-    /**
-     *    Basic HTTP response.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleHttpResponse extends StickyError {
-        var $_method;
-        var $_url;
-        var $_request_data;
-        var $_sent;
-        var $_content;
-        var $_headers;
-        
-        /**
-         *    Constructor. Reads and parses the incoming
-         *    content and headers.
-         *    @param SimpleSocket $socket   Network connection to fetch
-         *                                  response text from.
-         *    @param string $method         HTTP request method.
-         *    @param SimpleUrl $url         Resource name.
-         *    @param mixed $request_data    Record of content sent.
-         *    @access public
-         */
-        function SimpleHttpResponse(&$socket, $method, $url, $request_data = '') {
-            $this->StickyError();
-            $this->_method = $method;
-            $this->_url = $url;
-            $this->_request_data = $request_data;
-            $this->_sent = $socket->getSent();
-            $this->_content = false;
-            $raw = $this->_readAll($socket);
-            if ($socket->isError()) {
-                $this->_setError('Error reading socket [' . $socket->getError() . ']');
-                return;
-            }
-            $this->_parse($raw);
-        }
-        
-        /**
-         *    Splits up the headers and the rest of the content.
-         *    @param string $raw    Content to parse.
-         *    @access private
-         */
-        function _parse($raw) {
-            if (! $raw) {
-                $this->_setError('Nothing fetched');
-                $this->_headers = &new SimpleHttpHeaders('');
-            } elseif (! strstr($raw, "\r\n\r\n")) {
-                $this->_setError('Could not parse headers');
-                $this->_headers = &new SimpleHttpHeaders($raw);
-            } else {
-                list($headers, $this->_content) = explode("\r\n\r\n", $raw, 2);
-                $this->_headers = &new SimpleHttpHeaders($headers);
-            }
-        }
-        
-        /**
-         *    Original request method.
-         *    @return string        GET, POST or HEAD.
-         *    @access public
-         */
-        function getMethod() {
-            return $this->_method;
-        }
-        
-        /**
-         *    Resource name.
-         *    @return SimpleUrl        Current url.
-         *    @access public
-         */
-        function getUrl() {
-            return $this->_url;
-        }
-        
-        /**
-         *    Original request data.
-         *    @return mixed              Sent content.
-         *    @access public
-         */
-        function getRequestData() {
-            return $this->_request_data;
-        }
-        
-        /**
-         *    Raw request that was sent down the wire.
-         *    @return string        Bytes actually sent.
-         *    @access public
-         */
-        function getSent() {
-            return $this->_sent;
-        }
-        
-        /**
-         *    Accessor for the content after the last
-         *    header line.
-         *    @return string           All content.
-         *    @access public
-         */
-        function getContent() {
-            return $this->_content;
-        }
-        
-        /**
-         *    Accessor for header block. The response is the
-         *    combination of this and the content.
-         *    @return SimpleHeaders        Wrapped header block.
-         *    @access public
-         */
-        function getHeaders() {
-            return $this->_headers;
-        }
-        
-        /**
-         *    Accessor for any new cookies.
-         *    @return array       List of new cookies.
-         *    @access public
-         */
-        function getNewCookies() {
-            return $this->_headers->getNewCookies();
-        }
-        
-        /**
-         *    Reads the whole of the socket output into a
-         *    single string.
-         *    @param SimpleSocket $socket  Unread socket.
-         *    @return string               Raw output if successful
-         *                                 else false.
-         *    @access private
-         */
-        function _readAll(&$socket) {
-            $all = '';
-            while (! $this->_isLastPacket($next = $socket->read())) {
-                $all .= $next;
-            }
-            return $all;
-        }
-        
-        /**
-         *    Test to see if the packet from the socket is the
-         *    last one.
-         *    @param string $packet    Chunk to interpret.
-         *    @return boolean          True if empty or EOF.
-         *    @access private
-         */
-        function _isLastPacket($packet) {
-            if (is_string($packet)) {
-                return $packet === '';
-            }
-            return ! $packet;
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/mock_objects.php b/htdocs/TESTS/simpletest/mock_objects.php
deleted file mode 100644 (file)
index 83fcef5..0000000
+++ /dev/null
@@ -1,1255 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     MockObjects
-     * @version        $Id: mock_objects.php,v 1.49 2004/08/18 19:10:54 lastcraft Exp $
-     */
-
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once(dirname(__FILE__) . '/expectation.php');
-    require_once(dirname(__FILE__) . '/options.php');
-    require_once(dirname(__FILE__) . '/dumper.php');
-    /**#@-*/
-    
-    /**
-     * Default character simpletest will substitute for any value
-     */
-    define('MOCK_WILDCARD', '*');
-    
-    /**
-     *    A wildcard expectation always matches.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class WildcardExpectation extends SimpleExpectation {
-        
-        /**
-         *    Chains constructor only.
-         *    @access public
-         */
-        function WildcardExpectation() {
-            $this->SimpleExpectation();
-        }
-        
-        /**
-         *    Tests the expectation. Always true.
-         *    @param mixed $compare  Ignored.
-         *    @return boolean        True.
-         *    @access public
-         */
-        function test($compare) {
-            return true;
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            return 'Wildcard always matches [' . $dumper->describeValue($compare) . ']';
-        }
-    }
-    
-    /**
-     *    Parameter comparison assertion.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class ParametersExpectation extends SimpleExpectation {
-        var $_expected;
-        
-        /**
-         *    Sets the expected parameter list.
-         *    @param array $parameters  Array of parameters including
-         *                              those that are wildcarded.
-         *                              If the value is not an array
-         *                              then it is considered to match any.
-         *    @param mixed $wildcard    Any parameter matching this
-         *                              will always match.
-         *    @param string $message    Customised message on failure.
-         *    @access public
-         */
-        function ParametersExpectation($expected = false, $message = '%s') {
-            $this->SimpleExpectation($message);
-            $this->_expected = $expected;
-        }
-        
-        /**
-         *    Tests the assertion. True if correct.
-         *    @param array $parameters     Comparison values.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($parameters) {
-            if (! is_array($this->_expected)) {
-                return true;
-            }
-            if (count($this->_expected) != count($parameters)) {
-                return false;
-            }
-            for ($i = 0; $i < count($this->_expected); $i++) {
-                if (! $this->_testParameter($parameters[$i], $this->_expected[$i])) {
-                    return false;
-                }
-            }
-            return true;
-        }
-        
-        /**
-         *    Tests an individual parameter.
-         *    @param mixed $parameter    Value to test.
-         *    @param mixed $expected     Comparison value.
-         *    @return boolean            True if expectation
-         *                               fulfilled.
-         *    @access private
-         */
-        function _testParameter($parameter, $expected) {
-            $comparison = $this->_coerceToExpectation($expected);
-            return $comparison->test($parameter);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param array $comparison   Incoming parameter list.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($parameters) {
-            if ($this->test($parameters)) {
-                return "Expectation of " . count($this->_expected) .
-                        " arguments of [" . $this->_renderArguments($this->_expected) .
-                        "] is correct";
-            } else {
-                return $this->_describeDifference($this->_expected, $parameters);
-            }
-        }
-        
-        /**
-         *    Message to display if expectation differs from
-         *    the parameters actually received.
-         *    @param array $expected      Expected parameters as list.
-         *    @param array $parameters    Actual parameters received.
-         *    @return string              Description of difference.
-         *    @access private
-         */
-        function _describeDifference($expected, $parameters) {
-            if (count($expected) != count($parameters)) {
-                return "Expected " . count($expected) .
-                        " arguments of [" . $this->_renderArguments($expected) .
-                        "] but got " . count($parameters) .
-                        " arguments of [" . $this->_renderArguments($parameters) . "]";
-            }
-            $messages = array();
-            for ($i = 0; $i < count($expected); $i++) {
-                $comparison = $this->_coerceToExpectation($expected[$i]);
-                if (! $comparison->test($parameters[$i])) {
-                    $messages[] = "parameter " . ($i + 1) . " with [" .
-                            $comparison->overlayMessage($parameters[$i]) . "]";
-                }
-            }
-            return "Parameter expectation differs at " . implode(" and ", $messages);
-        }
-        
-        /**
-         *    Creates an identical expectation if the
-         *    object/value is not already some type
-         *    of expectation.
-         *    @param mixed $expected      Expected value.
-         *    @return SimpleExpectation   Expectation object.
-         *    @access private
-         */
-        function _coerceToExpectation($expected) {
-            if (SimpleTestCompatibility::isA($expected, 'SimpleExpectation')) {
-                return $expected;
-            }
-            return new IdenticalExpectation($expected);
-        }
-        
-        /**
-         *    Renders the argument list as a string for
-         *    messages.
-         *    @param array $args    Incoming arguments.
-         *    @return string        Simple description of type and value.
-         *    @access private
-         */
-        function _renderArguments($args) {
-            $descriptions = array();
-            if (is_array($args)) {
-                foreach ($args as $arg) {
-                    $dumper = &new SimpleDumper();
-                    $descriptions[] = $dumper->describeValue($arg);
-                }
-            }
-            return implode(', ', $descriptions);
-        }
-    }
-    
-    /**
-     *    Confirms that the number of calls on a method is as expected.
-     */
-    class CallCountExpectation extends SimpleExpectation {
-        var $_method;
-        var $_count;
-        
-        /**
-         *    Stashes the method and expected count for later
-         *    reporting.
-         *    @param string $method    Name of method to confirm against.
-         *    @param integer $count    Expected number of calls.
-         *    @param string $message   Custom error message.
-         */
-        function CallCountExpectation($method, $count, $message = '%s') {
-            $this->_method = $method;
-            $this->_count = $count;
-            $this->SimpleExpectation($message);
-        }
-        
-        /**
-         *    Tests the assertion. True if correct.
-         *    @param integer $compare     Measured call count.
-         *    @return boolean             True if expected.
-         *    @access public
-         */
-        function test($compare) {
-            return ($this->_count == $compare);
-        }
-        
-        /**
-         *    Reports the comparison.
-         *    @param integer $compare     Measured call count.
-         *    @return string              Message to show.
-         *    @access public
-         */
-        function testMessage($compare) {
-            return 'Expected call count for [' . $this->_method .
-                    '] was [' . $this->_count .
-                    '] got [' . $compare . ']';
-        }
-    }
-      
-    /**
-     *    Confirms that the number of calls on a method is as expected.
-     */
-    class MinimumCallCountExpectation extends SimpleExpectation {
-        var $_method;
-        var $_count;
-        
-        /**
-         *    Stashes the method and expected count for later
-         *    reporting.
-         *    @param string $method    Name of method to confirm against.
-         *    @param integer $count    Minimum number of calls.
-         *    @param string $message   Custom error message.
-         */
-        function MinimumCallCountExpectation($method, $count, $message = '%s') {
-            $this->_method = $method;
-            $this->_count = $count;
-            $this->SimpleExpectation($message);
-        }
-        
-        /**
-         *    Tests the assertion. True if correct.
-         *    @param integer $compare     Measured call count.
-         *    @return boolean             True if enough.
-         *    @access public
-         */
-        function test($compare) {
-            return ($this->_count <= $compare);
-        }
-        
-        /**
-         *    Reports the comparison.
-         *    @param integer $compare     Measured call count.
-         *    @return string              Message to show.
-         *    @access public
-         */
-        function testMessage($compare) {
-            return 'Minimum call count for [' . $this->_method .
-                    '] was [' . $this->_count .
-                    '] got [' . $compare . ']';
-        }
-    }
-        
-    /**
-     *    Confirms that the number of calls on a method is as expected.
-     */
-    class MaximumCallCountExpectation extends SimpleExpectation {
-        var $_method;
-        var $_count;
-        
-        /**
-         *    Stashes the method and expected count for later
-         *    reporting.
-         *    @param string $method    Name of method to confirm against.
-         *    @param integer $count    Minimum number of calls.
-         *    @param string $message   Custom error message.
-         */
-        function MaximumCallCountExpectation($method, $count, $message = '%s') {
-            $this->_method = $method;
-            $this->_count = $count;
-            $this->SimpleExpectation($message);
-        }
-        
-        /**
-         *    Tests the assertion. True if correct.
-         *    @param integer $compare     Measured call count.
-         *    @return boolean             True if not over.
-         *    @access public
-         */
-        function test($compare) {
-            return ($this->_count >= $compare);
-        }
-        
-        /**
-         *    Reports the comparison.
-         *    @param integer $compare     Measured call count.
-         *    @return string              Message to show.
-         *    @access public
-         */
-        function testMessage($compare) {
-            return 'Miximum call count for [' . $this->_method .
-                    '] was [' . $this->_count .
-                    '] got [' . $compare . ']';
-        }
-    }
-
-    /**
-     *    Retrieves values and references by searching the
-     *    parameter lists until a match is found.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class CallMap {
-        var $_map;
-        
-        /**
-         *    Creates an empty call map.
-         *    @access public
-         */
-        function CallMap() {
-            $this->_map = array();
-        }
-        
-        /**
-         *    Stashes a value against a method call.
-         *    @param array $parameters    Arguments including wildcards.
-         *    @param mixed $value         Value copied into the map.
-         *    @access public
-         */
-        function addValue($parameters, $value) {
-            $this->addReference($parameters, $value);
-        }
-        
-        /**
-         *    Stashes a reference against a method call.
-         *    @param array $parameters    Array of arguments (including wildcards).
-         *    @param mixed $reference     Array reference placed in the map.
-         *    @access public
-         */
-        function addReference($parameters, &$reference) {
-            $place = count($this->_map);
-            $this->_map[$place] = array();
-            $this->_map[$place]["params"] = new ParametersExpectation($parameters);
-            $this->_map[$place]["content"] = &$reference;
-        }
-        
-        /**
-         *    Searches the call list for a matching parameter
-         *    set. Returned by reference.
-         *    @param array $parameters    Parameters to search by
-         *                                without wildcards.
-         *    @return object              Object held in the first matching
-         *                                slot, otherwise null.
-         *    @access public
-         */
-        function &findFirstMatch($parameters) {
-            $slot = $this->_findFirstSlot($parameters);
-            if (!isset($slot)) {
-                return null;
-            }
-            return $slot["content"];
-        }
-        
-        /**
-         *    Searches the call list for a matching parameter
-         *    set. True if successful.
-         *    @param array $parameters    Parameters to search by
-         *                                without wildcards.
-         *    @return boolean             True if a match is present.
-         *    @access public
-         */
-        function isMatch($parameters) {
-            return ($this->_findFirstSlot($parameters) != null);
-        }
-        
-        /**
-         *    Searches the map for a matching item.
-         *    @param array $parameters    Parameters to search by
-         *                                without wildcards.
-         *    @return array               Reference to slot or null.
-         *    @access private
-         */
-        function &_findFirstSlot($parameters) {
-            for ($i = 0; $i < count($this->_map); $i++) {
-                if ($this->_map[$i]["params"]->test($parameters)) {
-                    return $this->_map[$i];
-                }
-            }
-            return null;
-        }
-    }
-    
-    /**
-     *    An empty collection of methods that can have their
-     *    return values set. Used for prototyping.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class SimpleStub {
-        var $_wildcard;
-        var $_is_strict;
-        var $_returns;
-        var $_return_sequence;
-        var $_call_counts;
-        
-        /**
-         *    Sets up the wildcard and everything else empty.
-         *    @param mixed $wildcard      Parameter matching wildcard.
-         *    @param boolean $is_strict   Enables method name checks.
-         *    @access public
-         */
-        function SimpleStub($wildcard, $is_strict = true) {
-            $this->_wildcard = $wildcard;
-            $this->_is_strict = $is_strict;
-            $this->_returns = array();
-            $this->_return_sequence = array();
-            $this->_call_counts = array();
-        }
-        
-        /**
-         *    Replaces wildcard matches with wildcard
-         *    expectations in the argument list.
-         *    @param array $args      Raw argument list.
-         *    @return array           Argument list with
-         *                            expectations.
-         *    @access private
-         */
-        function _replaceWildcards($args) {
-            if ($args === false) {
-                return false;
-            }
-            for ($i = 0; $i < count($args); $i++) {
-                if ($args[$i] === $this->_wildcard) {
-                    $args[$i] = new WildcardExpectation();
-                }
-            }
-            return $args;
-        }
-        
-        /**
-         *    Returns the expected value for the method name.
-         *    @param string $method       Name of method to simulate.
-         *    @param array $args          Arguments as an array.
-         *    @return mixed               Stored return.
-         *    @access private
-         */
-        function &_invoke($method, $args) {
-            $method = strtolower($method);
-            $step = $this->getCallCount($method);
-            $this->_addCall($method, $args);
-            return $this->_getReturn($method, $args, $step);
-        }
-        
-        /**
-         *    Triggers a PHP error if the method is not part
-         *    of this object.
-         *    @param string $method        Name of method.
-         *    @param string $task          Description of task attempt.
-         *    @access protected
-         */
-        function _dieOnNoMethod($method, $task) {
-            if ($this->_is_strict && !method_exists($this, $method)) {
-                trigger_error(
-                        "Cannot $task as no ${method}() in class " . get_class($this),
-                        E_USER_ERROR);
-            }
-        }
-        
-        /**
-         *    Adds one to the call count of a method.
-         *    @param string $method        Method called.
-         *    @param array $args           Arguments as an array.
-         *    @access protected
-         */
-        function _addCall($method, $args) {
-            if (!isset($this->_call_counts[$method])) {
-                $this->_call_counts[$method] = 0;
-            }
-            $this->_call_counts[$method]++;
-        }
-        
-        /**
-         *    Fetches the call count of a method so far.
-         *    @param string $method        Method name called.
-         *    @return                      Number of calls so far.
-         *    @access public
-         */
-        function getCallCount($method) {
-            $this->_dieOnNoMethod($method, "get call count");
-            $method = strtolower($method);
-            if (! isset($this->_call_counts[$method])) {
-                return 0;
-            }
-            return $this->_call_counts[$method];
-        }
-        
-        /**
-         *    Sets a return for a parameter list that will
-         *    be passed by value for all calls to this method.
-         *    @param string $method       Method name.
-         *    @param mixed $value         Result of call passed by value.
-         *    @param array $args          List of parameters to match
-         *                                including wildcards.
-         *    @access public
-         */
-        function setReturnValue($method, $value, $args = false) {
-            $this->_dieOnNoMethod($method, "set return value");
-            $args = $this->_replaceWildcards($args);
-            $method = strtolower($method);
-            if (! isset($this->_returns[$method])) {
-                $this->_returns[$method] = new CallMap();
-            }
-            $this->_returns[$method]->addValue($args, $value);
-        }
-                
-        /**
-         *    Sets a return for a parameter list that will
-         *    be passed by value only when the required call count
-         *    is reached.
-         *    @param integer $timing   Number of calls in the future
-         *                             to which the result applies. If
-         *                             not set then all calls will return
-         *                             the value.
-         *    @param string $method    Method name.
-         *    @param mixed $value      Result of call passed by value.
-         *    @param array $args       List of parameters to match
-         *                             including wildcards.
-         *    @access public
-         */
-        function setReturnValueAt($timing, $method, $value, $args = false) {
-            $this->_dieOnNoMethod($method, "set return value sequence");
-            $args = $this->_replaceWildcards($args);
-            $method = strtolower($method);
-            if (! isset($this->_return_sequence[$method])) {
-                $this->_return_sequence[$method] = array();
-            }
-            if (! isset($this->_return_sequence[$method][$timing])) {
-                $this->_return_sequence[$method][$timing] = new CallMap();
-            }
-            $this->_return_sequence[$method][$timing]->addValue($args, $value);
-        }
-         
-        /**
-         *    Sets a return for a parameter list that will
-         *    be passed by reference for all calls.
-         *    @param string $method       Method name.
-         *    @param mixed $reference     Result of the call will be this object.
-         *    @param array $args          List of parameters to match
-         *                                including wildcards.
-         *    @access public
-         */
-        function setReturnReference($method, &$reference, $args = false) {
-            $this->_dieOnNoMethod($method, "set return reference");
-            $args = $this->_replaceWildcards($args);
-            $method = strtolower($method);
-            if (! isset($this->_returns[$method])) {
-                $this->_returns[$method] = new CallMap();
-            }
-            $this->_returns[$method]->addReference($args, $reference);
-        }
-        
-        /**
-         *    Sets a return for a parameter list that will
-         *    be passed by value only when the required call count
-         *    is reached.
-         *    @param integer $timing    Number of calls in the future
-         *                              to which the result applies. If
-         *                              not set then all calls will return
-         *                              the value.
-         *    @param string $method     Method name.
-         *    @param mixed $reference   Result of the call will be this object.
-         *    @param array $args        List of parameters to match
-         *                              including wildcards.
-         *    @access public
-         */
-        function setReturnReferenceAt($timing, $method, &$reference, $args = false) {
-            $this->_dieOnNoMethod($method, "set return reference sequence");
-            $args = $this->_replaceWildcards($args);
-            $method = strtolower($method);
-            if (! isset($this->_return_sequence[$method])) {
-                $this->_return_sequence[$method] = array();
-            }
-            if (! isset($this->_return_sequence[$method][$timing])) {
-                $this->_return_sequence[$method][$timing] = new CallMap();
-            }
-            $this->_return_sequence[$method][$timing]->addReference($args, $reference);
-        }
-        
-        /**
-         *    Finds the return value matching the incoming
-         *    arguments. If there is no matching value found
-         *    then an error is triggered.
-         *    @param string $method      Method name.
-         *    @param array $args         Calling arguments.
-         *    @param integer $step       Current position in the
-         *                               call history.
-         *    @return mixed              Stored return.
-         *    @access protected
-         */
-        function &_getReturn($method, $args, $step) {
-            if (isset($this->_return_sequence[$method][$step])) {
-                if ($this->_return_sequence[$method][$step]->isMatch($args)) {
-                    return $this->_return_sequence[$method][$step]->findFirstMatch($args);
-                }
-            }
-            if (isset($this->_returns[$method])) {
-                return $this->_returns[$method]->findFirstMatch($args);
-            }
-            return null;
-        }
-    }
-    
-    /**
-     *    An empty collection of methods that can have their
-     *    return values set and expectations made of the
-     *    calls upon them. The mock will assert the
-     *    expectations against it's attached test case in
-     *    addition to the server stub behaviour.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class SimpleMock extends SimpleStub {
-        var $_test;
-        var $_expected_counts;
-        var $_max_counts;
-        var $_expected_args;
-        var $_expected_args_at;
-        
-        /**
-         *    Creates an empty return list and expectation list.
-         *    All call counts are set to zero.
-         *    @param SimpleTestCase $test    Test case to test expectations in.
-         *    @param mixed $wildcard         Parameter matching wildcard.
-         *    @param boolean $is_strict      Enables method name checks on
-         *                                   expectations.
-         *    @access public
-         */
-        function SimpleMock(&$test, $wildcard, $is_strict = true) {
-            $this->SimpleStub($wildcard, $is_strict);
-            if (! $test) {
-                trigger_error('No unit tester for mock object', E_USER_ERROR);
-                return;
-            }
-            $this->_test = &$test;
-            $this->_expected_counts = array();
-            $this->_max_counts = array();
-            $this->_expected_args = array();
-            $this->_expected_args_at = array();
-        }
-        
-        /**
-         *    Accessor for attached unit test so that when
-         *    subclassed, new expectations can be added easily.
-         *    @return SimpleTestCase      Unit test passed in constructor.
-         *    @access public
-         */
-        function &getTest() {
-            return $this->_test;
-        }
-        
-        /**
-         *    Die if bad arguments array is passed
-         *    @param mixed $args     The arguments value to be checked.
-         *    @param string $task    Description of task attempt.
-         *    @return boolean        Valid arguments
-         *    @access private
-         */
-        function _checkArgumentsIsArray($args, $task) {
-               if (! is_array($args)) {
-                       trigger_error(
-                               "Cannot $task as \$args parameter is not an array",
-                               E_USER_ERROR);
-               }
-        }
-        
-        /**
-         *    Sets up an expected call with a set of
-         *    expected parameters in that call. All
-         *    calls will be compared to these expectations
-         *    regardless of when the call is made.
-         *    @param string $method        Method call to test.
-         *    @param array $args           Expected parameters for the call
-         *                                 including wildcards.
-         *    @param string $message       Overridden message.
-         *    @access public
-         */
-        function expectArguments($method, $args, $message = '%s') {
-            $this->_dieOnNoMethod($method, 'set expected arguments');
-            $this->_checkArgumentsIsArray($args, 'set expected arguments');
-            $args = $this->_replaceWildcards($args);
-            $message .= Mock::getExpectationLine(' at line [%d]');
-            $this->_expected_args[strtolower($method)] =
-                    new ParametersExpectation($args, $message);
-        }
-        
-        /**
-         *    Sets up an expected call with a set of
-         *    expected parameters in that call. The
-         *    expected call count will be adjusted if it
-         *    is set too low to reach this call.
-         *    @param integer $timing    Number of calls in the future at
-         *                              which to test. Next call is 0.
-         *    @param string $method     Method call to test.
-         *    @param array $args        Expected parameters for the call
-         *                              including wildcards.
-         *    @param string $message    Overridden message.
-         *    @access public
-         */
-        function expectArgumentsAt($timing, $method, $args, $message = '%s') {
-            $this->_dieOnNoMethod($method, "set expected arguments at time");
-            $this->_checkArgumentsIsArray($args, "set expected arguments");
-            $args = $this->_replaceWildcards($args);
-            if (! isset($this->_expected_args_at[$timing])) {
-                $this->_expected_args_at[$timing] = array();
-            }
-            $method = strtolower($method);
-            $message .= Mock::getExpectationLine(' at line [%d]');
-            $this->_expected_args_at[$timing][$method] =
-                    new ParametersExpectation($args, $message);
-        }
-        
-        /**
-         *    Sets an expectation for the number of times
-         *    a method will be called. The tally method
-         *    is used to check this.
-         *    @param string $method        Method call to test.
-         *    @param integer $count        Number of times it should
-         *                                 have been called at tally.
-         *    @param string $message       Overridden message.
-         *    @access public
-         */
-        function expectCallCount($method, $count, $message = '%s') {
-            $this->_dieOnNoMethod($method, "set expected call count");
-            $message .= Mock::getExpectationLine(' at line [%d]');
-            $this->_expected_counts[strtolower($method)] =
-                    new CallCountExpectation($method, $count, $message);
-        }
-        
-        /**
-         *    Sets the number of times a method may be called
-         *    before a test failure is triggered.
-         *    @param string $method        Method call to test.
-         *    @param integer $count        Most number of times it should
-         *                                 have been called.
-         *    @param string $message       Overridden message.
-         *    @access public
-         */
-        function expectMaximumCallCount($method, $count, $message = '%s') {
-            $this->_dieOnNoMethod($method, "set maximum call count");
-            $message .= Mock::getExpectationLine(' at line [%d]');
-            $this->_max_counts[strtolower($method)] = 
-                    new MaximumCallCountExpectation($method, $count, $message);
-        }
-        
-        /**
-         *    Sets the number of times to call a method to prevent
-         *    a failure on the tally.
-         *    @param string $method      Method call to test.
-         *    @param integer $count      Least number of times it should
-         *                               have been called.
-         *    @param string $message     Overridden message.
-         *    @access public
-         */
-        function expectMinimumCallCount($method, $count, $message = '%s') {
-            $this->_dieOnNoMethod($method, "set minimum call count");
-            $message .= Mock::getExpectationLine(' at line [%d]');
-            $this->_expected_counts[strtolower($method)] =
-                    new MinimumCallCountExpectation($method, $count, $message);
-        }
-        
-        /**
-         *    Convenience method for barring a method
-         *    call.
-         *    @param string $method        Method call to ban.
-         *    @param string $message       Overridden message.
-         *    @access public
-         */
-        function expectNever($method, $message = '%s') {
-            $this->expectMaximumCallCount($method, 0, $message);
-        }
-        
-        /**
-         *    Convenience method for a single method
-         *    call.
-         *    @param string $method     Method call to track.
-         *    @param array $args        Expected argument list or
-         *                              false for any arguments.
-         *    @param string $message    Overridden message.
-         *    @access public
-         */
-        function expectOnce($method, $args = false, $message = '%s') {
-            $this->expectCallCount($method, 1, $message);
-            if ($args !== false) {
-                $this->expectArguments($method, $args, $message);
-            }
-        }
-        
-        /**
-         *    Convenience method for requiring a method
-         *    call.
-         *    @param string $method       Method call to track.
-         *    @param array $args          Expected argument list or
-         *                                false for any arguments.
-         *    @param string $message      Overridden message.
-         *    @access public
-         */
-        function expectAtLeastOnce($method, $args = false, $message = '%s') {
-            $this->expectMinimumCallCount($method, 1, $message);
-            if ($args !== false) {
-                $this->expectArguments($method, $args, $message);
-            }
-        }
-        
-        /**
-         *    Totals up the call counts and triggers a test
-         *    assertion if a test is present for expected
-         *    call counts.
-         *    This method must be called explicitly for the call
-         *    count assertions to be triggered.
-         *    @access public
-         */
-        function tally() {
-            foreach ($this->_expected_counts as $method => $expectation) {
-                $this->_assertTrue(
-                        $expectation->test($this->getCallCount($method)),
-                        $expectation->overlayMessage($this->getCallCount($method)));
-            }
-        }
-
-        /**
-         *    Returns the expected value for the method name
-         *    and checks expectations. Will generate any
-         *    test assertions as a result of expectations
-         *    if there is a test present.
-         *    @param string $method       Name of method to simulate.
-         *    @param array $args          Arguments as an array.
-         *    @return mixed               Stored return.
-         *    @access private
-         */
-        function &_invoke($method, $args) {
-            $method = strtolower($method);
-            $step = $this->getCallCount($method);
-            $this->_addCall($method, $args);
-            $this->_checkExpectations($method, $args, $step);
-            return $this->_getReturn($method, $args, $step);
-        }
-        
-        /**
-         *    Tests the arguments against expectations.
-         *    @param string $method        Method to check.
-         *    @param array $args           Argument list to match.
-         *    @param integer $timing       The position of this call
-         *                                 in the call history.
-         *    @access private
-         */
-        function _checkExpectations($method, $args, $timing) {
-            if (isset($this->_max_counts[$method])) {
-                if (! $this->_max_counts[$method]->test($timing + 1)) {
-                    $this->_assertTrue(
-                            false,
-                            $this->_max_counts[$method]->overlayMessage($timing + 1));
-                }
-            }
-            if (isset($this->_expected_args_at[$timing][$method])) {
-                $this->_assertTrue(
-                        $this->_expected_args_at[$timing][$method]->test($args),
-                        "Mock method [$method] at [$timing] -> " .
-                                $this->_expected_args_at[$timing][$method]->overlayMessage($args));
-            } elseif (isset($this->_expected_args[$method])) {
-                $this->_assertTrue(
-                        $this->_expected_args[$method]->test($args),
-                        "Mock method [$method] -> " . $this->_expected_args[$method]->overlayMessage($args));
-            }
-        }
-        
-        /**
-         *    Triggers an assertion on the held test case.
-         *    Should be overridden when using another test
-         *    framework other than the SimpleTest one if the
-         *    assertion method has a different name.
-         *    @param boolean $assertion     True will pass.
-         *    @param string $message        Message that will go with
-         *                                  the test event.
-         *    @access protected
-         */
-        function _assertTrue($assertion, $message) {
-            $this->_test->assertTrue($assertion, $message);
-        }
-    }
-    
-    /**
-     *    Static methods only service class for code generation of
-     *    server stubs.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class Stub {
-        
-        /**
-         *    Factory for server stub classes.
-         */
-        function Stub() {
-            trigger_error('Stub factory methods are class only.');
-        }
-        
-        /**
-         *    Clones a class' interface and creates a stub version
-         *    that can have return values set.
-         *    @param string $class        Class to clone.
-         *    @param string $stub_class   New class name. Default is
-         *                                the old name with "Stub"
-         *                                prepended.
-         *    @param array $methods       Additional methods to add beyond
-         *                                those in th cloned class. Use this
-         *                                to emulate the dynamic addition of
-         *                                methods in the cloned class or when
-         *                                the class hasn't been written yet.
-         *    @static
-         *    @access public
-         */
-        function generate($class, $stub_class = false, $methods = false) {
-            if (! class_exists($class)) {
-                return false;
-            }
-            if (! $stub_class) {
-                $stub_class = "Stub" . $class;
-            }
-            if (class_exists($stub_class)) {
-                return false;
-            }
-            return eval(Stub::_createClassCode(
-                    $class,
-                    $stub_class,
-                    $methods ? $methods : array()) . " return true;");
-        }
-        
-        /**
-         *    The new server stub class code in string form.
-         *    @param string $class           Class to clone.
-         *    @param string $mock_class      New class name.
-         *    @param array $methods          Additional methods.
-         *    @static
-         *    @access private
-         */
-        function _createClassCode($class, $stub_class, $methods) {
-            $stub_base = SimpleTestOptions::getStubBaseClass();
-            $code = "class $stub_class extends $stub_base {\n";
-            $code .= "    function $stub_class(\$wildcard = MOCK_WILDCARD) {\n";
-            $code .= "        \$this->$stub_base(\$wildcard);\n";
-            $code .= "    }\n";
-            $code .= Stub::_createHandlerCode($class, $stub_base, $methods);
-            $code .= "}\n";
-            return $code;
-        }
-        
-        /**
-         *    Creates code within a class to generate replaced
-         *    methods. All methods call the _invoke() handler
-         *    with the method name and the arguments in an
-         *    array.
-         *    @param string $class     Class to clone.
-         *    @param string $base      Base class with methods that
-         *                             cannot be cloned.
-         *    @param array $methods    Additional methods.
-         *    @static
-         *    @access private
-         */
-        function _createHandlerCode($class, $base, $methods) {
-            $code = "";
-            $methods = array_merge($methods, get_class_methods($class));
-            foreach ($methods as $method) {
-                if (($method == '__construct') || ($method == '__clone')) {
-                    continue;
-                }
-                if (in_array($method, get_class_methods($base))) {
-                    continue;
-                }
-                $code .= "    function &$method() {\n";
-                $code .= "        \$args = func_get_args();\n";
-                $code .= "        return \$this->_invoke(\"$method\", \$args);\n";
-                $code .= "    }\n";
-            }
-            return $code;
-        }
-    }
-    
-    /**
-     *    Static methods only service class for code generation of
-     *    mock objects.
-        *    @package SimpleTest
-        *    @subpackage MockObjects
-     */
-    class Mock {
-        
-        /**
-         *    Factory for mock object classes.
-         *    @access public
-         */
-        function Mock() {
-            trigger_error("Mock factory methods are class only.");
-        }
-        
-        /**
-         *    Clones a class' interface and creates a mock version
-         *    that can have return values and expectations set.
-         *    @param string $class         Class to clone.
-         *    @param string $mock_class    New class name. Default is
-         *                                 the old name with "Mock"
-         *                                 prepended.
-         *    @param array $methods        Additional methods to add beyond
-         *                                 those in th cloned class. Use this
-         *                                 to emulate the dynamic addition of
-         *                                 methods in the cloned class or when
-         *                                 the class hasn't been written yet.
-         *    @static
-         *    @access public
-         */
-        function generate($class, $mock_class = false, $methods = false) {
-            if (! class_exists($class)) {
-                return false;
-            }
-            if (! $mock_class) {
-                $mock_class = "Mock" . $class;
-            }
-            if (class_exists($mock_class)) {
-                return false;
-            }
-            return eval(Mock::_createClassCode(
-                    $class,
-                    $mock_class,
-                    $methods ? $methods : array()) . " return true;");
-        }
-        
-        /**
-         *    Generates a version of a class with selected
-         *    methods mocked only. Inherits the old class
-         *    and chains the mock methods of an aggregated
-         *    mock object.
-         *    @param string $class            Class to clone.
-         *    @param string $mock_class       New class name.
-         *    @param array $methods           Methods to be overridden
-         *                                    with mock versions.
-         *    @static
-         *    @access public
-         */
-        function generatePartial($class, $mock_class, $methods) {
-            if (! class_exists($class)) {
-                return false;
-            }
-            if (class_exists($mock_class)) {
-                trigger_error("Partial mock class [$mock_class] already exists");
-                return false;
-            }
-            return eval(Mock::_extendClassCode($class, $mock_class, $methods));
-        }
-
-        /**
-         *    The new mock class code as a string.
-         *    @param string $class           Class to clone.
-         *    @param string $mock_class      New class name.
-         *    @param array $methods          Additional methods.
-         *    @return string                 Code for new mock class.
-         *    @static
-         *    @access private
-         */
-        function _createClassCode($class, $mock_class, $methods) {
-            $mock_base = SimpleTestOptions::getMockBaseClass();
-            $code = "class $mock_class extends $mock_base {\n";
-            $code .= "    function $mock_class(&\$test, \$wildcard = MOCK_WILDCARD) {\n";
-            $code .= "        \$this->$mock_base(\$test, \$wildcard);\n";
-            $code .= "    }\n";
-            $code .= Stub::_createHandlerCode($class, $mock_base, $methods);
-            $code .= "}\n";
-            return $code;
-        }
-
-        /**
-         *    The extension class code as a string. The class
-         *    composites a mock object and chains mocked methods
-         *    to it.
-         *    @param string $class         Class to extend.
-         *    @param string $mock_class    New class name.
-         *    @param array  $methods       Mocked methods.
-         *    @return string               Code for a new class.
-         *    @static
-         *    @access private
-         */
-        function _extendClassCode($class, $mock_class, $methods) {
-            $mock_base = SimpleTestOptions::getMockBaseClass();
-            $code  = "class $mock_class extends $class {\n";
-            $code .= "    var \$_mock;\n";
-            $code .= Mock::_addMethodList($methods);
-            $code .= "\n";
-            $code .= "    function $mock_class(&\$test, \$wildcard = MOCK_WILDCARD) {\n";
-            $code .= "        \$this->_mock = &new $mock_base(\$test, \$wildcard, false);\n";
-            $code .= "    }\n";
-            $code .= Mock::_chainMockReturns();
-            $code .= Mock::_chainMockExpectations();
-            $code .= Mock::_overrideMethods($methods);
-            $code .= SimpleTestOptions::getPartialMockCode();
-            $code .= "}\n";
-            return $code;
-        }
-        
-        /**
-         *    Creates a list of mocked methods for error checking.
-         *    @param array $methods       Mocked methods.
-         *    @return string              Code for a method list.
-         *    @access private
-         */
-        function _addMethodList($methods) {
-            return "    var \$_mocked_methods = array('" .
-                    implode("', '", $methods) . "');\n";
-        }
-        
-        /**
-         *    Creates code to abandon the expectation if not mocked.
-         *    @param string $alias       Parameter name of method name.
-         *    @return string             Code for bail out.
-         *    @access private
-         */
-        function _bailOutIfNotMocked($alias) {
-            $code  = "        if (! in_array($alias, \$this->_mocked_methods)) {\n";
-            $code .= "            trigger_error('Method [$alias] is not mocked');\n";
-            $code .= "            return;\n";
-            $code .= "        }\n";
-            return $code;
-        }
-        
-        /**
-         *    Creates source code for chaining to the composited
-         *    mock object.
-         *    @return string           Code for mock set up.
-         *    @access private
-         */
-        function _chainMockReturns() {
-            $code  = "    function setReturnValue(\$method, \$value, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->setReturnValue(\$method, \$value, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function setReturnValueAt(\$timing, \$method, \$value, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->setReturnValueAt(\$timing, \$method, \$value, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function setReturnReference(\$method, &\$ref, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->setReturnReference(\$method, \$ref, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function setReturnReferenceAt(\$timing, \$method, &\$ref, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->setReturnReferenceAt(\$timing, \$method, \$ref, \$args);\n";
-            $code .= "    }\n";
-            return $code;
-        }
-        
-        /**
-         *    Creates source code for chaining to an aggregated
-         *    mock object.
-         *    @return string                 Code for expectations.
-         *    @access private
-         */
-        function _chainMockExpectations() {
-            $code = "    function expectArguments(\$method, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectArguments(\$method, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function expectArgumentsAt(\$timing, \$method, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectArgumentsAt(\$timing, \$method, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function expectCallCount(\$method, \$count) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectCallCount(\$method, \$count);\n";
-            $code .= "    }\n";
-            $code .= "    function expectMaximumCallCount(\$method, \$count) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectMaximumCallCount(\$method, \$count);\n";
-            $code .= "    }\n";
-            $code .= "    function expectMinimumCallCount(\$method, \$count) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectMinimumCallCount(\$method, \$count);\n";
-            $code .= "    }\n";
-            $code .= "    function expectNever(\$method) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectNever(\$method);\n";
-            $code .= "    }\n";
-            $code .= "    function expectOnce(\$method, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectOnce(\$method, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function expectAtLeastOnce(\$method, \$args = false) {\n";
-            $code .= Mock::_bailOutIfNotMocked("\$method");
-            $code .= "        \$this->_mock->expectAtLeastOnce(\$method, \$args);\n";
-            $code .= "    }\n";
-            $code .= "    function tally() {\n";
-            $code .= "        \$this->_mock->tally();\n";
-            $code .= "    }\n";
-            return $code;
-        }
-        
-        /**
-         *    Creates source code to override a list of methods
-         *    with mock versions.
-         *    @param array $methods    Methods to be overridden
-         *                             with mock versions.
-         *    @return string           Code for overridden chains.
-         *    @access private
-         */
-        function _overrideMethods($methods) {
-            $code = "";
-            foreach ($methods as $method) {
-                $code .= "    function &$method() {\n";
-                $code .= "        \$args = func_get_args();\n";
-                $code .= "        return \$this->_mock->_invoke(\"$method\", \$args);\n";
-                $code .= "    }\n";
-            }
-            return $code;
-        }
-        
-        /**
-         *    Uses a stack trace to find the line of an assertion.
-         *    @param string $format    String formatting.
-         *    @param array $stack      Stack frames top most first. Only
-         *                             needed if not using the PHP
-         *                             backtrace function.
-         *    @return string           Line number of first assert*
-         *                             method embedded in format string.
-         *    @access public
-         *    @static
-         */
-        function getExpectationLine($format = '%d', $stack = false) {
-            if ($stack === false) {
-                $stack = SimpleTestCompatibility::getStackTrace();
-            }
-            return SimpleDumper::getFormattedAssertionLine($stack, $format, 'expect');
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/options.php b/htdocs/TESTS/simpletest/options.php
deleted file mode 100644 (file)
index bb474d3..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @version        $Id: options.php,v 1.28 2004/08/18 16:24:00 lastcraft Exp $
-     */
-    
-    /**
-     *    Static global directives and options.
-     *   @package      SimpleTest
-     */
-    class SimpleTestOptions {
-        
-        /**
-         *    Reads the SimpleTest version from the release file.
-         *    @return string        Version string.
-         *    @static
-         *    @access public
-         */
-        function getVersion() {
-            $content = file(dirname(__FILE__) . '/VERSION');
-            return trim($content[0]);
-        }
-        
-        /**
-         *    Sets the name of a test case to ignore, usually
-         *    because the class is an abstract case that should
-         *    not be run.
-         *    @param string $class        Add a class to ignore.
-         *    @static
-         *    @access public
-         */
-        function ignore($class) {
-            $registry = &SimpleTestOptions::_getRegistry();
-            $registry['IgnoreList'][] = strtolower($class);
-        }
-        
-        /**
-         *    Test to see if a test case is in the ignore
-         *    list.
-         *    @param string $class        Class name to test.
-         *    @return boolean             True if should not be run.
-         *    @access public
-         *    @static
-         */
-        function isIgnored($class) {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return in_array(strtolower($class), $registry['IgnoreList']);
-        }
-        
-        /**
-         *    The base class name is settable here. This is the
-         *    class that a new stub will inherited from.
-         *    To modify the generated stubs simply extend the
-         *    SimpleStub class and set it's name
-         *    with this method before any stubs are generated.
-         *    @param string $stub_base     Server stub class to use.
-         *    @static
-         *    @access public
-         */
-        function setStubBaseClass($stub_base) {
-            $registry = &SimpleTestOptions::_getRegistry();
-            $registry['StubBaseClass'] = $stub_base;
-        }
-        
-        /**
-         *    Accessor for the currently set stub base class.
-         *    @return string        Class name to inherit from.
-         *    @static
-         *    @access public
-         */
-        function getStubBaseClass() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['StubBaseClass'];
-        }
-        
-        /**
-         *    The base class name is settable here. This is the
-         *    class that a new mock will inherited from.
-         *    To modify the generated mocks simply extend the
-         *    SimpleMock class and set it's name
-         *    with this method before any mocks are generated.
-         *    @param string $mock_base        Mock base class to use.
-         *    @static
-         *    @access public
-         */
-        function setMockBaseClass($mock_base) {
-            $registry = &SimpleTestOptions::_getRegistry();
-            $registry['MockBaseClass'] = $mock_base;
-        }
-        
-        /**
-         *    Accessor for the currently set mock base class.
-         *    @return string           Class name to inherit from.
-         *    @static
-         *    @access public
-         */
-        function getMockBaseClass() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['MockBaseClass'];
-        }
-        
-        /**
-         *    Adds additional mock code.
-         *    @param string $code    Extra code that can be added
-         *                           to the partial mocks for
-         *                           extra functionality. Useful
-         *                           when a test tool has overridden
-         *                           the mock base classes.
-         *    @access public
-         */
-        function addPartialMockCode($code = '') {
-            $registry = &SimpleTestOptions::_getRegistry();
-            $registry['AdditionalPartialMockCode'] = $code;
-        }
-        
-        /**
-         *    Accessor for additional partial mock code.
-         *    @return string       Extra code.
-         *    @access public
-         */
-        function getPartialMockCode() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['AdditionalPartialMockCode'];
-        }
-        
-        /**
-         *    Sets proxy to use on all requests for when
-         *    testing from behind a firewall. Set host
-         *    to false to disable. This will take effect
-         *    if there are no other proxy settings.
-         *    @param string $proxy     Proxy host as URL.
-         *    @param string $username  Proxy username for authentication.
-         *    @param string $password  Proxy password for authentication.
-         *    @access public
-         */
-        function useProxy($proxy, $username = false, $password = false) {
-            $registry = &SimpleTestOptions::_getRegistry();
-            $registry['DefaultProxy'] = $proxy;
-            $registry['DefaultProxyUsername'] = $username;
-            $registry['DefaultProxyPassword'] = $password;
-        }
-        
-        /**
-         *    Accessor for default proxy host.
-         *    @return string       Proxy URL.
-         *    @access public
-         */
-        function getDefaultProxy() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['DefaultProxy'];
-        }
-        
-        /**
-         *    Accessor for default proxy username.
-         *    @return string    Proxy username for authentication.
-         *    @access public
-         */
-        function getDefaultProxyUsername() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['DefaultProxyUsername'];
-        }
-        
-        /**
-         *    Accessor for default proxy password.
-         *    @return string    Proxy password for authentication.
-         *    @access public
-         */
-        function getDefaultProxyPassword() {
-            $registry = &SimpleTestOptions::_getRegistry();
-            return $registry['DefaultProxyPassword'];
-        }
-        
-        /**
-         *    Accessor for global registry of options.
-         *    @return hash           All stored values.
-         *    @access private
-         *    @static
-         */
-        function &_getRegistry() {
-            static $registry = false;
-            if (! $registry) {
-                $registry = SimpleTestOptions::_getDefaults();
-            }
-            return $registry;
-        }
-        
-        /**
-         *    Constant default values.
-         *    @return hash       All registry defaults.
-         *    @access private
-         *    @static
-         */
-        function _getDefaults() {
-            return array(
-                    'StubBaseClass' => 'SimpleStub',
-                    'MockBaseClass' => 'SimpleMock',
-                    'IgnoreList' => array(),
-                    'AdditionalPartialMockCode' => '',
-                    'DefaultProxy' => false,
-                    'DefaultProxyUsername' => false,
-                    'DefaultProxyPassword' => false);
-        }
-    }
-    
-    /**
-     *  Static methods for compatibility between different
-     *  PHP versions.
-     * @package        SimpleTest
-     */
-    class SimpleTestCompatibility {
-        
-        /**
-         *    Identity test. Drops back to equality for PHP5
-         *    objects as the === operator counts as the
-         *    stronger reference constraint.
-         *    @param mixed $first    Test subject.
-         *    @param mixed $second   Comparison object.
-         *    @access public
-         *    @static
-         */
-        function isIdentical($first, $second) {
-            if (version_compare(phpversion(), '5') >= 0) {
-                if (gettype($first) != gettype($second)) {
-                    return false;
-                }
-                if ($first != $second) {
-                    return false;
-                }
-                if (is_object($first) && is_object($second)) {
-                    return (get_class($first) == get_class($second));
-                }
-                if (is_array($first) && is_array($second)) {
-                    if (array_keys($first) != array_keys($second)) {
-                        return false;
-                    }
-                    foreach (array_keys($first) as $key) {
-                        if (! SimpleTestCompatibility::isIdentical($first[$key], $second[$key])) {
-                            return false;
-                        }
-                    }
-                }
-                return true;
-            }
-            return ($first === $second);
-        }
-        
-        /**
-         *    Test to see if an object is a member of a
-         *    class hiearchy.
-         *    @param object $object    Object to test.
-         *    @param string $class     Root name of hiearchy.
-         *    @access public
-         *    @static
-         */
-        function isA($object, $class) {
-            if (version_compare(phpversion(), '5') >= 0) {
-                if (! class_exists($class)) {
-                    return false;
-                }
-                eval("\$is_a = \$object instanceof $class;");
-                return $is_a;
-            }
-            if (function_exists('is_a')) {
-                return is_a($object, $class);
-            }
-            return ((strtolower($class) == get_class($object))
-                    or (is_subclass_of($object, $class)));
-        }
-        
-        /**
-         *    Sets a socket timeout for each chunk.
-         *    @param resource $handle    Socket handle.
-         *    @param integer $timeout    Limit in seconds.
-         *    @access public
-         *    @static
-         */
-        function setTimeout($handle, $timeout) {
-            stream_set_timeout($handle, $timeout, 0);
-        }
-        
-        /**
-         *    Gets the current stack trace topmost first.
-         *    @return array        List of stack frames.
-         *    @access public
-         *    @static
-         */
-        function getStackTrace() {
-            if (function_exists('debug_backtrace')) {
-                return array_reverse(debug_backtrace());
-            }
-            return array();
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/page.php b/htdocs/TESTS/simpletest/page.php
deleted file mode 100644 (file)
index c8d2bb7..0000000
+++ /dev/null
@@ -1,942 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: page.php,v 1.99 2004/08/18 23:10:19 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/http.php');
-    require_once(dirname(__FILE__) . '/parser.php');
-    require_once(dirname(__FILE__) . '/tag.php');
-    require_once(dirname(__FILE__) . '/form.php');
-    /**#@-*/
-    
-    /**
-     *    SAX event handler. Maintains a list of
-     *    open tags and dispatches them as they close.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimplePageBuilder extends SimpleSaxListener {
-        var $_tags;
-        var $_page;
-        
-        /**
-         *    Sets the builder up empty.
-         *    @access public
-         */
-        function SimplePageBuilder() {
-            $this->SimpleSaxListener();
-        }
-        
-        /**
-         *    Reads the raw content and send events
-         *    into the page to be built.
-         *    @param $response SimpleHttpResponse  Fetched response.
-         *    @return SimplePage                   Newly parsed page.
-         *    @access public
-         */
-        function parse($response) {
-            $this->_tags = array();
-            $this->_page = &$this->_createPage($response);
-            $parser = &$this->_createParser();
-            $parser->parse($response->getContent());
-            return $this->_page;
-        }
-        
-        /**
-         *    Creates an empty page.
-         *    @return SimplePage        New unparsed page.
-         *    @access protected
-         */
-        function &_createPage($response) {
-            return new SimplePage($response);
-        }
-        
-        /**
-         *    Creates the parser used with the builder.
-         *    @return SimpleSaxParser   Parser to generate events for
-         *                              the builder.
-         *    @access protected
-         */
-        function &_createParser() {
-            return new SimpleSaxParser($this);
-        }
-        
-        /**
-         *    Start of element event. Opens a new tag.
-         *    @param string $name         Element name.
-         *    @param hash $attributes     Attributes without content
-         *                                are marked as true.
-         *    @return boolean             False on parse error.
-         *    @access public
-         */
-        function startElement($name, $attributes) {
-            $tag = &$this->_createTag($name, $attributes);
-            if ($name == 'form') {
-                $this->_page->acceptFormStart($tag);
-                return true;
-            }            
-            if ($name == 'frameset') {
-                $this->_page->acceptFramesetStart($tag);
-                return true;
-            }            
-            if ($name == 'frame') {
-                $this->_page->acceptFrame($tag);
-                return true;
-            }            
-            if ($tag->expectEndTag()) {
-                $this->_openTag($tag);
-                return true;
-            }
-            $this->_page->acceptTag($tag);
-            return true;
-        }
-        
-        /**
-         *    End of element event.
-         *    @param string $name        Element name.
-         *    @return boolean            False on parse error.
-         *    @access public
-         */
-        function endElement($name) {
-            if ($name == 'form') {
-                $this->_page->acceptFormEnd();
-                return true;
-            }            
-            if ($name == 'frameset') {
-                $this->_page->acceptFramesetEnd();
-                return true;
-            }            
-            if (isset($this->_tags[$name]) && (count($this->_tags[$name]) > 0)) {
-                $tag = array_pop($this->_tags[$name]);
-                $this->_addContentTagToOpenTags($tag);
-                $this->_page->acceptTag($tag);
-                return true;
-            }
-            return true;
-        }
-        
-        /**
-         *    Unparsed, but relevant data. The data is added
-         *    to every open tag.
-         *    @param string $text        May include unparsed tags.
-         *    @return boolean            False on parse error.
-         *    @access public
-         */
-        function addContent($text) {
-            foreach (array_keys($this->_tags) as $name) {
-                for ($i = 0; $i < count($this->_tags[$name]); $i++) {
-                    $this->_tags[$name][$i]->addContent($text);
-                }
-            }
-            return true;
-        }
-        
-        /**
-         *    Parsed relevant data. The parsed tag is added
-         *    to every open tag.
-         *    @param SimpleTag $tag        May include unparsed tags.
-         *    @access private
-         */
-        function _addContentTagToOpenTags(&$tag) {
-            if (! in_array($tag->getTagName(), array('option'))) {
-                return;
-            }
-            foreach (array_keys($this->_tags) as $name) {
-                for ($i = 0; $i < count($this->_tags[$name]); $i++) {
-                    $this->_tags[$name][$i]->addTag($tag);
-                }
-            }
-        }
-        
-        /**
-         *    Opens a tag for receiving content. Multiple tags
-         *    will be receiving input at the same time.
-         *    @param SimpleTag $tag        New content tag.
-         *    @access private
-         */
-        function _openTag(&$tag) {
-            $name = $tag->getTagName();
-            if (! in_array($name, array_keys($this->_tags))) {
-                $this->_tags[$name] = array();
-            }
-            array_push($this->_tags[$name], $tag);
-        }
-        
-        /**
-         *    Factory for the tag objects. Creates the
-         *    appropriate tag object for the incoming tag name.
-         *    @param string $name        HTML tag name.
-         *    @param hash $attributes    Element attributes.
-         *    @return SimpleTag          Tag object.
-         *    @access protected
-         */
-        function &_createTag($name, $attributes) {
-            if ($name == 'a') {
-                return new SimpleAnchorTag($attributes);
-            } elseif ($name == 'title') {
-                return new SimpleTitleTag($attributes);
-            } elseif ($name == 'input') {
-                return $this->_createInputTag($attributes);
-            } elseif ($name == 'button') {
-                return new SimpleButtonTag($attributes);
-            } elseif ($name == 'textarea') {
-                return new SimpleTextAreaTag($attributes);
-            } elseif ($name == 'select') {
-                return $this->_createSelectionTag($attributes);
-            } elseif ($name == 'option') {
-                return new SimpleOptionTag($attributes);
-            } elseif ($name == 'form') {
-                return new SimpleFormTag($attributes);
-            } elseif ($name == 'frame') {
-                return new SimpleFrameTag($attributes);
-            }
-            return new SimpleTag($name, $attributes);
-        }
-        
-        /**
-         *    Factory for selection fields.
-         *    @param hash $attributes    Element attributes.
-         *    @return SimpleTag          Tag object.
-         *    @access protected
-         */
-        function &_createSelectionTag($attributes) {
-            if (isset($attributes['multiple'])) {
-                return new MultipleSelectionTag($attributes);
-            }
-            return new SimpleSelectionTag($attributes);
-        }
-        
-        /**
-         *    Factory for input tags.
-         *    @param hash $attributes    Element attributes.
-         *    @return SimpleTag          Tag object.
-         *    @access protected
-         */
-        function &_createInputTag($attributes) {
-            if (! isset($attributes['type'])) {
-                return new SimpleTextTag($attributes);
-            }
-            if ($attributes['type'] == 'submit') {
-                return new SimpleSubmitTag($attributes);
-            } elseif ($attributes['type'] == 'image') {
-                return new SimpleImageSubmitTag($attributes);
-            } elseif ($attributes['type'] == 'checkbox') {
-                return new SimpleCheckboxTag($attributes);
-            } elseif ($attributes['type'] == 'radio') {
-                return new SimpleRadioButtonTag($attributes);
-            } else {
-                return new SimpleTextTag($attributes);
-            }
-        }
-    }
-    
-    /**
-     *    A wrapper for a web page.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimplePage {
-        var $_links;
-        var $_title;
-        var $_open_forms;
-        var $_complete_forms;
-        var $_frameset;
-        var $_frames;
-        var $_frameset_nesting_level;
-        var $_transport_error;
-        var $_raw;
-        var $_sent;
-        var $_headers;
-        var $_method;
-        var $_url;
-        var $_request_data;
-        
-        /**
-         *    Parses a page ready to access it's contents.
-         *    @param SimpleHttpResponse $response     Result of HTTP fetch.
-         *    @access public
-         */
-        function SimplePage($response = false) {
-            $this->_links = array();
-            $this->_title = false;
-            $this->_open_forms = array();
-            $this->_complete_forms = array();
-            $this->_frameset = false;
-            $this->_frames = array();
-            $this->_frameset_nesting_level = 0;
-            if ($response) {
-                $this->_extractResponse($response);
-            } else {
-                $this->_noResponse();
-            }
-        }
-        
-        /**
-         *    Extracts all of the response information.
-         *    @param SimpleHttpResponse $response    Response being parsed.
-         *    @access private
-         */
-        function _extractResponse($response) {
-            $this->_transport_error = $response->getError();
-            $this->_raw = $response->getContent();
-            $this->_sent = $response->getSent();
-            $this->_headers = $response->getHeaders();
-            $this->_method = $response->getMethod();
-            $this->_url = $response->getUrl();
-            $this->_request_data = $response->getRequestData();
-        }
-        
-        /**
-         *    Sets up a missng response.
-         *    @access private
-         */
-        function _noResponse() {
-            $this->_transport_error = 'No page fetched yet';
-            $this->_raw = false;
-            $this->_sent = false;
-            $this->_headers = false;
-            $this->_method = 'GET';
-            $this->_url = false;
-            $this->_request_data = false;
-        }
-        
-        /**
-         *    Original request as bytes sent down the wire.
-         *    @return mixed              Sent content.
-         *    @access public
-         */
-        function getRequest() {
-            return $this->_sent;
-        }
-        
-        /**
-         *    Accessor for raw text of page.
-         *    @return string        Raw unparsed content.
-         *    @access public
-         */
-        function getRaw() {
-            return $this->_raw;
-        }
-        
-        /**
-         *    Accessor for raw headers of page.
-         *    @return string       Header block as text.
-         *    @access public
-         */
-        function getHeaders() {
-            if ($this->_headers) {
-                return $this->_headers->getRaw();
-            }
-            return false;
-        }
-        
-        /**
-         *    Original request method.
-         *    @return string        GET, POST or HEAD.
-         *    @access public
-         */
-        function getMethod() {
-            return $this->_method;
-        }
-        
-        /**
-         *    Original resource name.
-         *    @return SimpleUrl        Current url.
-         *    @access public
-         */
-        function getUrl() {
-            return $this->_url;
-        }
-        
-        /**
-         *    Original request data.
-         *    @return mixed              Sent content.
-         *    @access public
-         */
-        function getRequestData() {
-            return $this->_request_data;
-        }
-        
-        /**
-         *    Accessor for last error.
-         *    @return string        Error from last response.
-         *    @access public
-         */
-        function getTransportError() {
-            return $this->_transport_error;
-        }
-        
-        /**
-         *    Accessor for current MIME type.
-         *    @return string    MIME type as string; e.g. 'text/html'
-         *    @access public
-         */
-        function getMimeType() {
-            if ($this->_headers) {
-                return $this->_headers->getMimeType();
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for HTTP response code.
-         *    @return integer    HTTP response code received.
-         *    @access public
-         */
-        function getResponseCode() {
-            if ($this->_headers) {
-                return $this->_headers->getResponseCode();
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for last Authentication type. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Description of challenge type.
-         *    @access public
-         */
-        function getAuthentication() {
-            if ($this->_headers) {
-                return $this->_headers->getAuthentication();
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for last Authentication realm. Only valid
-         *    straight after a challenge (401).
-         *    @return string    Name of security realm.
-         *    @access public
-         */
-        function getRealm() {
-            if ($this->_headers) {
-                return $this->_headers->getRealm();
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for current frame focus. Will be
-         *    false as no frames.
-         *    @return array    Always empty.
-         *    @access public
-         */
-        function getFrameFocus() {
-            return array();
-        }
-        
-        /**
-         *    Sets the focus by index. The integer index starts from 1.
-         *    @param integer $choice    Chosen frame.
-         *    @return boolean           Always false.
-         *    @access public
-         */
-        function setFrameFocusByIndex($choice) {
-            return false;
-        }
-        
-        /**
-         *    Sets the focus by name. Always fails for a leaf page.
-         *    @param string $name    Chosen frame.
-         *    @return boolean        False as no frames.
-         *    @access public
-         */
-        function setFrameFocus($name) {
-            return false;
-        }
-        
-        /**
-         *    Clears the frame focus. Does nothing for a leaf page.
-         *    @access public
-         */
-        function clearFrameFocus() {
-        }
-        
-        /**
-         *    Adds a tag to the page.
-         *    @param SimpleTag $tag        Tag to accept.
-         *    @access public
-         */
-        function acceptTag(&$tag) {
-            if ($tag->getTagName() == "a") {
-                $this->_addLink($tag);
-            } elseif ($tag->getTagName() == "title") {
-                $this->_setTitle($tag);
-            } elseif ($this->_isFormElement($tag->getTagName())) {
-                for ($i = 0; $i < count($this->_open_forms); $i++) {
-                    $this->_open_forms[$i]->addWidget($tag);
-                }
-            }
-        }
-        
-        /**
-         *    Tests to see if a tag is a possible form
-         *    element.
-         *    @param string $name     HTML element name.
-         *    @return boolean         True if form element.
-         *    @access private
-         */
-        function _isFormElement($name) {
-            return in_array($name, array('input', 'button', 'textarea', 'select'));
-        }
-        
-        /**
-         *    Opens a form. New widgets go here.
-         *    @param SimpleFormTag $tag      Tag to accept.
-         *    @access public
-         */
-        function acceptFormStart(&$tag) {
-            $this->_open_forms[] = &new SimpleForm($tag, $this->getUrl());
-        }
-        
-        /**
-         *    Closes the most recently opened form.
-         *    @access public
-         */
-        function acceptFormEnd() {
-            if (count($this->_open_forms)) {
-                $this->_complete_forms[] = array_pop($this->_open_forms);
-            }
-        }
-        
-        /**
-         *    Opens a frameset. A frameset may contain nested
-         *    frameset tags.
-         *    @param SimpleFramesetTag $tag      Tag to accept.
-         *    @access public
-         */
-        function acceptFramesetStart(&$tag) {
-            if (! $this->_isLoadingFrames()) {
-                $this->_frameset = &$tag;
-            }
-            $this->_frameset_nesting_level++;
-        }
-        
-        /**
-         *    Closes the most recently opened frameset.
-         *    @access public
-         */
-        function acceptFramesetEnd() {
-            if ($this->_isLoadingFrames()) {
-                $this->_frameset_nesting_level--;
-            }
-        }
-        
-        /**
-         *    Takes a single frame tag and stashes it in
-         *    the current frame set.
-         *    @param SimpleFrameTag $tag      Tag to accept.
-         *    @access public
-         */
-        function acceptFrame(&$tag) {
-            if ($this->_isLoadingFrames()) {
-                if ($tag->getAttribute('src')) {
-                    $this->_frames[] = &$tag;
-                }
-            }
-        }
-        
-        /**
-         *    Test to see if in the middle of reading
-         *    a frameset.
-         *    @return boolean        True if inframeset.
-         *    @access private
-         */
-        function _isLoadingFrames() {
-            if (! $this->_frameset) {
-                return false;
-            }
-            return ($this->_frameset_nesting_level > 0);
-        }
-        
-        /**
-         *    Test to see if link is an absolute one.
-         *    @param string $url     Url to test.
-         *    @return boolean        True if absolute.
-         *    @access protected
-         */
-        function _linkIsAbsolute($url) {
-            $parsed = new SimpleUrl($url);
-            return (boolean)($parsed->getScheme() && $parsed->getHost());
-        }
-        
-        /**
-         *    Adds a link to the page.
-         *    @param SimpleAnchorTag $tag      Link to accept.
-         *    @access protected
-         */
-        function _addLink($tag) {
-            $this->_links[] = $tag;
-        }
-        
-        /**
-         *    Test for the presence of a frameset.
-         *    @return boolean        True if frameset.
-         *    @access public
-         */
-        function hasFrames() {
-            return (boolean)$this->_frameset;
-        }
-        
-        /**
-         *    Accessor for frame name and source URL for every frame that
-         *    will need to be loaded. Immediate children only.
-         *    @return boolean/array     False if no frameset or
-         *                              otherwise a hash of frame URLs.
-         *                              The key is either a numerical
-         *                              base one index or the name attribute.
-         *    @access public
-         */
-        function getFrameset() {
-            if (! $this->_frameset) {
-                return false;
-            }
-            $urls = array();
-            for ($i = 0; $i < count($this->_frames); $i++) {
-                $name = $this->_frames[$i]->getAttribute('name');
-                $url = new SimpleUrl($this->_frames[$i]->getAttribute('src'));
-                $urls[$name ? $name : $i + 1] = $url->makeAbsolute($this->getUrl());
-            }
-            return $urls;
-        }
-        
-        /**
-         *    Fetches a list of loaded frames.
-         *    @return array/string    Just the URL for a single
-         *                            page.
-         *    @access public
-         */
-        function getFrames() {
-            $url = $this->getUrl();
-            return $url->asString();
-        }
-        
-        /**
-         *    Accessor for a list of all fixed links.
-         *    @return array   List of urls with scheme of
-         *                    http or https and hostname.
-         *    @access public
-         */
-        function getAbsoluteUrls() {
-            $all = array();
-            foreach ($this->_links as $link) {
-                if ($this->_linkIsAbsolute($link->getHref())) {
-                    $all[] = $link->getHref();
-                }
-            }
-            return $all;
-        }
-        
-        /**
-         *    Accessor for a list of all relative links.
-         *    @return array      List of urls without hostname.
-         *    @access public
-         */
-        function getRelativeUrls() {
-            $all = array();
-            foreach ($this->_links as $link) {
-                if (! $this->_linkIsAbsolute($link->getHref())) {
-                    $all[] = $link->getHref();
-                }
-            }
-            return $all;
-        }
-        
-        /**
-         *    Space at the ends will be stripped and space in
-         *    between is reduced to one space.
-         *    @param string $html  Typical HTML code.
-         *    @return string       Content as big string.
-         *    @access private
-         */
-        function _normalise($html) {
-            return preg_replace('/\S\s+\S/', ' ', strtolower(trim($html)));
-        }
-        
-        /**
-         *    Matches strings regardles of varying whitespace.
-         *    @param string $first    First to match with.
-         *    @param string $second   Second to match against.
-         *    @return boolean         True if matches even with
-         *                            whitespace differences.
-         *    @access private
-         */
-        function _isNormalMatch($first, $second) {
-            return ($this->_normalise($first) == $this->_normalise($second));
-        }
-        
-        /**
-         *    Accessor for URLs by the link label. Label will match
-         *    regardess of whitespace issues and case.
-         *    @param string $label    Text of link.
-         *    @return array           List of links with that label.
-         *    @access public
-         */
-        function getUrlsByLabel($label) {
-            $matches = array();
-            foreach ($this->_links as $link) {
-                if ($this->_isNormalMatch($link->getContent(), $label)) {
-                    $matches[] = $this->_getUrlFromLink($link);
-                }
-            }
-            return $matches;
-        }
-        
-        /**
-         *    Accessor for a URL by the id attribute.
-         *    @param string $id       Id attribute of link.
-         *    @return SimpleUrl       URL with that id of false if none.
-         *    @access public
-         */
-        function getUrlById($id) {
-            foreach ($this->_links as $link) {
-                if ($link->getAttribute('id') === (string)$id) {
-                    return $this->_getUrlFromLink($link);
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Converts a link into a target URL.
-         *    @param SimpleAnchor $link    Parsed link.
-         *    @return SimpleUrl            URL with frame target if any.
-         *    @access private
-         */
-        function _getUrlFromLink($link) {
-            $url = $this->_makeAbsolute($link->getHref());
-            if ($link->getAttribute('target')) {
-                $url->setTarget($link->getAttribute('target'));
-            }
-            return $url;
-        }
-        
-        /**
-         *    Expands expandomatic URLs into fully qualified
-         *    URLs.
-         *    @param SimpleUrl $url        Relative URL.
-         *    @return SimpleUrl            Absolute URL.
-         *    @access protected
-         */
-        function _makeAbsolute($url) {
-            if (! is_object($url)) {
-                $url = new SimpleUrl($url);
-            }
-            return $url->makeAbsolute($this->getUrl());
-        }
-        
-        /**
-         *    Sets the title tag contents.
-         *    @param SimpleTitleTag $tag    Title of page.
-         *    @access protected
-         */
-        function _setTitle(&$tag) {
-            $this->_title = &$tag;
-        }
-        
-        /**
-         *    Accessor for parsed title.
-         *    @return string     Title or false if no title is present.
-         *    @access public
-         */
-        function getTitle() {
-            if ($this->_title) {
-                return $this->_title->getContent();
-            }
-            return false;
-        }
-        
-        /**
-         *    Finds a held form by button label. Will only
-         *    search correctly built forms.
-         *    @param string $label       Button label, default 'Submit'.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitLabel($label) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasSubmitLabel($label)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by button label. Will only
-         *    search correctly built forms.
-         *    @param string $name        Button name attribute.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitName($name) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasSubmitName($name)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by button id. Will only
-         *    search correctly built forms.
-         *    @param string $id          Button ID attribute.
-         *    @return SimpleForm         Form object containing the button.
-         *    @access public
-         */
-        function &getFormBySubmitId($id) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasSubmitId($id)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by image label. Will only
-         *    search correctly built forms.
-         *    @param string $label       Usually the alt attribute.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageLabel($label) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasImageLabel($label)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by image button id. Will only
-         *    search correctly built forms.
-         *    @param string $name        Image name.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageName($name) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasImageName($name)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by image button id. Will only
-         *    search correctly built forms.
-         *    @param string $id          Image ID attribute.
-         *    @return SimpleForm         Form object containing the image.
-         *    @access public
-         */
-        function &getFormByImageId($id) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->hasImageId($id)) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Finds a held form by the form ID. A way of
-         *    identifying a specific form when we have control
-         *    of the HTML code.
-         *    @param string $id     Form label.
-         *    @return SimpleForm    Form object containing the matching ID.
-         *    @access public
-         */
-        function &getFormById($id) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->getId() == $id) {
-                    return $this->_complete_forms[$i];
-                }
-            }
-            return null;
-        }
-        
-        /**
-         *    Sets a field on each form in which the field is
-         *    available.
-         *    @param string $name        Field name.
-         *    @param string $value       Value to set field to.
-         *    @return boolean            True if value is valid.
-         *    @access public
-         */
-        function setField($name, $value) {
-            $is_set = false;
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->setField($name, $value)) {
-                    $is_set = true;
-                }
-            }
-            return $is_set;
-        }
-         
-        /**
-         *    Sets a field on the form in which the unique field is
-         *    available.
-         *    @param string/integer $id  Field ID attribute.
-         *    @param string $value       Value to set field to.
-         *    @return boolean            True if value is valid.
-         *    @access public
-         */
-        function setFieldById($id, $value) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                if ($this->_complete_forms[$i]->setFieldById($id, $value)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-       
-        /**
-         *    Accessor for a form element value within a page.
-         *    Finds the first match.
-         *    @param string $name        Field name.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getField($name) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                $value = $this->_complete_forms[$i]->getValue($name);
-                if (isset($value)) {
-                    return $value;
-                }
-            }
-            return null;
-        }
-         
-        /**
-         *    Accessor for a form element value within a page.
-         *    Finds the first match.
-         *    @param string/integer $id  Field ID attribute.
-         *    @return string/boolean     A string if the field is
-         *                               present, false if unchecked
-         *                               and null if missing.
-         *    @access public
-         */
-        function getFieldById($id) {
-            for ($i = 0; $i < count($this->_complete_forms); $i++) {
-                $value = $this->_complete_forms[$i]->getValueById($id);
-                if (isset($value)) {
-                    return $value;
-                }
-            }
-            return null;
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/parser.php b/htdocs/TESTS/simpletest/parser.php
deleted file mode 100644 (file)
index 6c56731..0000000
+++ /dev/null
@@ -1,728 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     MockObjects
-     * @version        $Id: parser.php,v 1.61 2004/08/11 16:14:37 lastcraft Exp $
-     */
-
-    /**#@+
-     * Lexer mode stack constants
-     */
-    define("LEXER_ENTER", 1);
-    define("LEXER_MATCHED", 2);
-    define("LEXER_UNMATCHED", 3);
-    define("LEXER_EXIT", 4);
-    define("LEXER_SPECIAL", 5);
-    /**#@-*/
-    
-    /**
-     *    Compounded regular expression. Any of
-     *    the contained patterns could match and
-     *    when one does it's label is returned.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class ParallelRegex {
-        var $_patterns;
-        var $_labels;
-        var $_regex;
-        var $_case;
-        
-        /**
-         *    Constructor. Starts with no patterns.
-         *    @param boolean $case    True for case sensitive, false
-         *                            for insensitive.
-         *    @access public
-         */
-        function ParallelRegex($case) {
-            $this->_case = $case;
-            $this->_patterns = array();
-            $this->_labels = array();
-            $this->_regex = null;
-        }
-        
-        /**
-         *    Adds a pattern with an optional label.
-         *    @param string $pattern      Perl style regex, but ( and )
-         *                                lose the usual meaning.
-         *    @param string $label        Label of regex to be returned
-         *                                on a match.
-         *    @access public
-         */
-        function addPattern($pattern, $label = true) {
-            $count = count($this->_patterns);
-            $this->_patterns[$count] = $pattern;
-            $this->_labels[$count] = $label;
-            $this->_regex = null;
-        }
-        
-        /**
-         *    Attempts to match all patterns at once against
-         *    a string.
-         *    @param string $subject      String to match against.
-         *    @param string $match        First matched portion of
-         *                                subject.
-         *    @return boolean             True on success.
-         *    @access public
-         */
-        function match($subject, &$match) {
-            if (count($this->_patterns) == 0) {
-                return false;
-            }
-            if (! preg_match($this->_getCompoundedRegex(), $subject, $matches)) {
-                $match = '';
-                return false;
-            }
-            $match = $matches[0];
-            for ($i = 1; $i < count($matches); $i++) {
-                if ($matches[$i]) {
-                    return $this->_labels[$i - 1];
-                }
-            }
-            return true;
-        }
-        
-        /**
-         *    Compounds the patterns into a single
-         *    regular expression separated with the
-         *    "or" operator. Caches the regex.
-         *    Will automatically escape (, ) and / tokens.
-         *    @param array $patterns    List of patterns in order.
-         *    @access private
-         */
-        function _getCompoundedRegex() {
-            if ($this->_regex == null) {
-                for ($i = 0; $i < count($this->_patterns); $i++) {
-                    $this->_patterns[$i] = '(' . str_replace(
-                            array('/', '(', ')'),
-                            array('\/', '\(', '\)'),
-                            $this->_patterns[$i]) . ')';
-                }
-                $this->_regex = "/" . implode("|", $this->_patterns) . "/" . $this->_getPerlMatchingFlags();
-            }
-            return $this->_regex;
-        }
-        
-        /**
-         *    Accessor for perl regex mode flags to use.
-         *    @return string       Perl regex flags.
-         *    @access private
-         */
-        function _getPerlMatchingFlags() {
-            return ($this->_case ? "msS" : "msSi");
-        }
-    }
-    
-    /**
-     *    States for a stack machine.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleStateStack {
-        var $_stack;
-        
-        /**
-         *    Constructor. Starts in named state.
-         *    @param string $start        Starting state name.
-         *    @access public
-         */
-        function SimpleStateStack($start) {
-            $this->_stack = array($start);
-        }
-        
-        /**
-         *    Accessor for current state.
-         *    @return string       State.
-         *    @access public
-         */
-        function getCurrent() {
-            return $this->_stack[count($this->_stack) - 1];
-        }
-        
-        /**
-         *    Adds a state to the stack and sets it
-         *    to be the current state.
-         *    @param string $state        New state.
-         *    @access public
-         */
-        function enter($state) {
-            array_push($this->_stack, $state);
-        }
-        
-        /**
-         *    Leaves the current state and reverts
-         *    to the previous one.
-         *    @return boolean    False if we drop off
-         *                       the bottom of the list.
-         *    @access public
-         */
-        function leave() {
-            if (count($this->_stack) == 1) {
-                return false;
-            }
-            array_pop($this->_stack);
-            return true;
-        }
-    }
-    
-    /**
-     *    Accepts text and breaks it into tokens.
-     *    Some optimisation to make the sure the
-     *    content is only scanned by the PHP regex
-     *    parser once. Lexer modes must not start
-     *    with leading underscores.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleLexer {
-        var $_regexes;
-        var $_parser;
-        var $_mode;
-        var $_mode_handlers;
-        var $_case;
-        
-        /**
-         *    Sets up the lexer in case insensitive matching
-         *    by default.
-         *    @param SimpleSaxParser $parser  Handling strategy by
-         *                                    reference.
-         *    @param string $start            Starting handler.
-         *    @param boolean $case            True for case sensitive.
-         *    @access public
-         */
-        function SimpleLexer(&$parser, $start = "accept", $case = false) {
-            $this->_case = $case;
-            $this->_regexes = array();
-            $this->_parser = &$parser;
-            $this->_mode = &new SimpleStateStack($start);
-            $this->_mode_handlers = array($start => $start);
-        }
-        
-        /**
-         *    Adds a token search pattern for a particular
-         *    parsing mode. The pattern does not change the
-         *    current mode.
-         *    @param string $pattern      Perl style regex, but ( and )
-         *                                lose the usual meaning.
-         *    @param string $mode         Should only apply this
-         *                                pattern when dealing with
-         *                                this type of input.
-         *    @access public
-         */
-        function addPattern($pattern, $mode = "accept") {
-            if (! isset($this->_regexes[$mode])) {
-                $this->_regexes[$mode] = new ParallelRegex($this->_case);
-            }
-            $this->_regexes[$mode]->addPattern($pattern);
-            if (! isset($this->_mode_handlers[$mode])) {
-                $this->_mode_handlers[$mode] = $mode;
-            }
-        }
-        
-        /**
-         *    Adds a pattern that will enter a new parsing
-         *    mode. Useful for entering parenthesis, strings,
-         *    tags, etc.
-         *    @param string $pattern      Perl style regex, but ( and )
-         *                                lose the usual meaning.
-         *    @param string $mode         Should only apply this
-         *                                pattern when dealing with
-         *                                this type of input.
-         *    @param string $new_mode     Change parsing to this new
-         *                                nested mode.
-         *    @access public
-         */
-        function addEntryPattern($pattern, $mode, $new_mode) {
-            if (! isset($this->_regexes[$mode])) {
-                $this->_regexes[$mode] = new ParallelRegex($this->_case);
-            }
-            $this->_regexes[$mode]->addPattern($pattern, $new_mode);
-            if (! isset($this->_mode_handlers[$new_mode])) {
-                $this->_mode_handlers[$new_mode] = $new_mode;
-            }
-        }
-        
-        /**
-         *    Adds a pattern that will exit the current mode
-         *    and re-enter the previous one.
-         *    @param string $pattern      Perl style regex, but ( and )
-         *                                lose the usual meaning.
-         *    @param string $mode         Mode to leave.
-         *    @access public
-         */
-        function addExitPattern($pattern, $mode) {
-            if (! isset($this->_regexes[$mode])) {
-                $this->_regexes[$mode] = new ParallelRegex($this->_case);
-            }
-            $this->_regexes[$mode]->addPattern($pattern, "__exit");
-            if (! isset($this->_mode_handlers[$mode])) {
-                $this->_mode_handlers[$mode] = $mode;
-            }
-        }
-        
-        /**
-         *    Adds a pattern that has a special mode. Acts as an entry
-         *    and exit pattern in one go, effectively calling a special
-         *    parser handler for this token only.
-         *    @param string $pattern      Perl style regex, but ( and )
-         *                                lose the usual meaning.
-         *    @param string $mode         Should only apply this
-         *                                pattern when dealing with
-         *                                this type of input.
-         *    @param string $special      Use this mode for this one token.
-         *    @access public
-         */
-        function addSpecialPattern($pattern, $mode, $special) {
-            if (! isset($this->_regexes[$mode])) {
-                $this->_regexes[$mode] = new ParallelRegex($this->_case);
-            }
-            $this->_regexes[$mode]->addPattern($pattern, "_$special");
-            if (! isset($this->_mode_handlers[$special])) {
-                $this->_mode_handlers[$special] = $special;
-            }
-        }
-        
-        /**
-         *    Adds a mapping from a mode to another handler.
-         *    @param string $mode        Mode to be remapped.
-         *    @param string $handler     New target handler.
-         *    @access public
-         */
-        function mapHandler($mode, $handler) {
-            $this->_mode_handlers[$mode] = $handler;
-        }
-        
-        /**
-         *    Splits the page text into tokens. Will fail
-         *    if the handlers report an error or if no
-         *    content is consumed. If successful then each
-         *    unparsed and parsed token invokes a call to the
-         *    held listener.
-         *    @param string $raw        Raw HTML text.
-         *    @return boolean           True on success, else false.
-         *    @access public
-         */
-        function parse($raw) {
-            if (! isset($this->_parser)) {
-                return false;
-            }
-            $length = strlen($raw);
-            while (is_array($parsed = $this->_reduce($raw))) {
-                list($raw, $unmatched, $matched, $mode) = $parsed;
-                if (! $this->_dispatchTokens($unmatched, $matched, $mode)) {
-                    return false;
-                }
-                if ($raw === '') {
-                    return true;
-                }
-                if (strlen($raw) == $length) {
-                    return false;
-                }
-                $length = strlen($raw);
-            }
-            if (! $parsed) {
-                return false;
-            }
-            return $this->_invokeParser($raw, LEXER_UNMATCHED);
-        }
-        
-        /**
-         *    Sends the matched token and any leading unmatched
-         *    text to the parser changing the lexer to a new
-         *    mode if one is listed.
-         *    @param string $unmatched    Unmatched leading portion.
-         *    @param string $matched      Actual token match.
-         *    @param string $mode         Mode after match. A boolean
-         *                                false mode causes no change.
-         *    @return boolean             False if there was any error
-         *                                from the parser.
-         *    @access private
-         */
-        function _dispatchTokens($unmatched, $matched, $mode = false) {
-            if (! $this->_invokeParser($unmatched, LEXER_UNMATCHED)) {
-                return false;
-            }
-            if (is_bool($mode)) {
-                return $this->_invokeParser($matched, LEXER_MATCHED);
-            }
-            if ($this->_isModeEnd($mode)) {
-                if (! $this->_invokeParser($matched, LEXER_EXIT)) {
-                    return false;
-                }
-                return $this->_mode->leave();
-            }
-            if ($this->_isSpecialMode($mode)) {
-                $this->_mode->enter($this->_decodeSpecial($mode));
-                if (! $this->_invokeParser($matched, LEXER_SPECIAL)) {
-                    return false;
-                }
-                return $this->_mode->leave();
-            }
-            $this->_mode->enter($mode);
-            return $this->_invokeParser($matched, LEXER_ENTER);
-        }
-        
-        /**
-         *    Tests to see if the new mode is actually to leave
-         *    the current mode and pop an item from the matching
-         *    mode stack.
-         *    @param string $mode    Mode to test.
-         *    @return boolean        True if this is the exit mode.
-         *    @access private
-         */
-        function _isModeEnd($mode) {
-            return ($mode === "__exit");
-        }
-        
-        /**
-         *    Test to see if the mode is one where this mode
-         *    is entered for this token only and automatically
-         *    leaves immediately afterwoods.
-         *    @param string $mode    Mode to test.
-         *    @return boolean        True if this is the exit mode.
-         *    @access private
-         */
-        function _isSpecialMode($mode) {
-            return (strncmp($mode, "_", 1) == 0);
-        }
-        
-        /**
-         *    Strips the magic underscore marking single token
-         *    modes.
-         *    @param string $mode    Mode to decode.
-         *    @return string         Underlying mode name.
-         *    @access private
-         */
-        function _decodeSpecial($mode) {
-            return substr($mode, 1);
-        }
-        
-        /**
-         *    Calls the parser method named after the current
-         *    mode. Empty content will be ignored. The lexer
-         *    has a parser handler for each mode in the lexer.
-         *    @param string $content        Text parsed.
-         *    @param boolean $is_match      Token is recognised rather
-         *                                  than unparsed data.
-         *    @access private
-         */
-        function _invokeParser($content, $is_match) {
-            if (($content === '') || ($content === false)) {
-                return true;
-            }
-            $handler = $this->_mode_handlers[$this->_mode->getCurrent()];
-            return $this->_parser->$handler($content, $is_match);
-        }
-        
-        /**
-         *    Tries to match a chunk of text and if successful
-         *    removes the recognised chunk and any leading
-         *    unparsed data. Empty strings will not be matched.
-         *    @param string $raw         The subject to parse. This is the
-         *                               content that will be eaten.
-         *    @return array              Three item list of unparsed
-         *                               content followed by the
-         *                               recognised token and finally the
-         *                               action the parser is to take.
-         *                               True if no match, false if there
-         *                               is a parsing error.
-         *    @access private
-         */
-        function _reduce($raw) {
-            if ($action = $this->_regexes[$this->_mode->getCurrent()]->match($raw, $match)) {
-                $unparsed_character_count = strpos($raw, $match);
-                $unparsed = substr($raw, 0, $unparsed_character_count);
-                $raw = substr($raw, $unparsed_character_count + strlen($match));
-                return array($raw, $unparsed, $match, $action);
-            }
-            return true;
-        }
-    }
-    
-    /**
-     *    Converts HTML tokens into selected SAX events.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleSaxParser {
-        var $_lexer;
-        var $_listener;
-        var $_tag;
-        var $_attributes;
-        var $_current_attribute;
-        
-        /**
-         *    Sets the listener.
-         *    @param SimpleSaxListener $listener    SAX event handler.
-         *    @access public
-         */
-        function SimpleSaxParser(&$listener) {
-            $this->_listener = &$listener;
-            $this->_lexer = &$this->createLexer($this);
-            $this->_tag = '';
-            $this->_attributes = array();
-            $this->_current_attribute = '';
-        }
-        
-        /**
-         *    Runs the content through the lexer which
-         *    should call back to the acceptors.
-         *    @param string $raw      Page text to parse.
-         *    @return boolean         False if parse error.
-         *    @access public
-         */
-        function parse($raw) {
-            return $this->_lexer->parse($raw);
-        }
-        
-        /**
-         *    Sets up the matching lexer. Starts in 'text' mode.
-         *    @param SimpleSaxParser $parser    Event generator, usually $self.
-         *    @return SimpleLexer               Lexer suitable for this parser.
-         *    @access public
-         *    @static
-         */
-        function &createLexer(&$parser) {
-            $lexer = &new SimpleLexer($parser, 'text');
-            $lexer->mapHandler('text', 'acceptTextToken');
-            SimpleSaxParser::_addSkipping($lexer);
-            foreach (SimpleSaxParser::_getParsedTags() as $tag) {
-                SimpleSaxParser::_addTag($lexer, $tag);
-            }
-            SimpleSaxParser::_addInTagTokens($lexer);
-            return $lexer;
-        }
-        
-        /**
-         *    List of parsed tags. Others are ignored.
-         *    @return array        List of searched for tags.
-         *    @access private
-         */
-        function _getParsedTags() {
-            return array('a', 'title', 'form', 'input', 'button', 'textarea', 'select',
-                    'option', 'frameset', 'frame');
-        }
-        
-        /**
-         *    The lexer has to skip certain sections such
-         *    as server code, client code and styles.
-         *    @param SimpleLexer $lexer        Lexer to add patterns to.
-         *    @access private
-         *    @static
-         */
-        function _addSkipping(&$lexer) {
-            $lexer->mapHandler('css', 'ignore');
-            $lexer->addEntryPattern('<style', 'text', 'css');
-            $lexer->addExitPattern('</style>', 'css');
-            $lexer->mapHandler('js', 'ignore');
-            $lexer->addEntryPattern('<script', 'text', 'js');
-            $lexer->addExitPattern('</script>', 'js');
-            $lexer->mapHandler('comment', 'ignore');
-            $lexer->addEntryPattern('<!--', 'text', 'comment');
-            $lexer->addExitPattern('-->', 'comment');
-        }
-        
-        /**
-         *    Pattern matches to start and end a tag.
-         *    @param SimpleLexer $lexer   Lexer to add patterns to.
-         *    @param string $tag          Name of tag to scan for.
-         *    @access private
-         *    @static
-         */
-        function _addTag(&$lexer, $tag) {
-            $lexer->addSpecialPattern("</$tag>", 'text', 'acceptEndToken');
-            $lexer->addEntryPattern("<$tag", 'text', 'tag');
-        }
-        
-        /**
-         *    Pattern matches to parse the inside of a tag
-         *    including the attributes and their quoting.
-         *    @param SimpleLexer $lexer    Lexer to add patterns to.
-         *    @access private
-         *    @static
-         */
-        function _addInTagTokens(&$lexer) {
-            $lexer->mapHandler('tag', 'acceptStartToken');
-            $lexer->addSpecialPattern('\s+', 'tag', 'ignore');
-            SimpleSaxParser::_addAttributeTokens($lexer);
-            $lexer->addExitPattern('>', 'tag');
-        }
-        
-        /**
-         *    Matches attributes that are either single quoted,
-         *    double quoted or unquoted.
-         *    @param SimpleLexer $lexer     Lexer to add patterns to.
-         *    @access private
-         *    @static
-         */
-        function _addAttributeTokens(&$lexer) {
-            $lexer->mapHandler('dq_attribute', 'acceptAttributeToken');
-            $lexer->addEntryPattern('=\s*"', 'tag', 'dq_attribute');
-            $lexer->addPattern("\\\\\"", 'dq_attribute');
-            $lexer->addExitPattern('"', 'dq_attribute');
-            $lexer->mapHandler('sq_attribute', 'acceptAttributeToken');
-            $lexer->addEntryPattern("=\s*'", 'tag', 'sq_attribute');
-            $lexer->addPattern("\\\\'", 'sq_attribute');
-            $lexer->addExitPattern("'", 'sq_attribute');
-            $lexer->mapHandler('uq_attribute', 'acceptAttributeToken');
-            $lexer->addSpecialPattern('=\s*[^>\s]*', 'tag', 'uq_attribute');
-        }
-        
-        /**
-         *    Accepts a token from the tag mode. If the
-         *    starting element completes then the element
-         *    is dispatched and the current attributes
-         *    set back to empty. The element or attribute
-         *    name is converted to lower case.
-         *    @param string $token     Incoming characters.
-         *    @param integer $event    Lexer event type.
-         *    @return boolean          False if parse error.
-         *    @access public
-         */
-        function acceptStartToken($token, $event) {
-            if ($event == LEXER_ENTER) {
-                $this->_tag = strtolower(substr($token, 1));
-                return true;
-            }
-            if ($event == LEXER_EXIT) {
-                $success = $this->_listener->startElement(
-                        $this->_tag,
-                        $this->_attributes);
-                $this->_tag = "";
-                $this->_attributes = array();
-                return $success;
-            }
-            if ($token != "=") {
-                $this->_current_attribute = strtolower($this->_decodeHtml($token));
-                $this->_attributes[$this->_current_attribute] = "";
-            }
-            return true;
-        }
-        
-        /**
-         *    Accepts a token from the end tag mode.
-         *    The element name is converted to lower case.
-         *    @param string $token     Incoming characters.
-         *    @param integer $event    Lexer event type.
-         *    @return boolean          False if parse error.
-         *    @access public
-         */
-        function acceptEndToken($token, $event) {
-            if (! preg_match('/<\/(.*)>/', $token, $matches)) {
-                return false;
-            }
-            return $this->_listener->endElement(strtolower($matches[1]));
-        }
-        
-        /**
-         *    Part of the tag data.
-         *    @param string $token     Incoming characters.
-         *    @param integer $event    Lexer event type.
-         *    @return boolean          False if parse error.
-         *    @access public
-         */
-        function acceptAttributeToken($token, $event) {
-            if ($event == LEXER_UNMATCHED) {
-                $this->_attributes[$this->_current_attribute] .=
-                        $this->_decodeHtml($token);
-            }
-            if ($event == LEXER_SPECIAL) {
-                $this->_attributes[$this->_current_attribute] .=
-                        preg_replace('/^=\s*/' , '', $this->_decodeHtml($token));
-            }
-            return true;
-        }
-        
-        /**
-         *    A character entity.
-         *    @param string $token    Incoming characters.
-         *    @param integer $event   Lexer event type.
-         *    @return boolean         False if parse error.
-         *    @access public
-         */
-        function acceptEntityToken($token, $event) {
-        }
-        
-        /**
-         *    Character data between tags regarded as
-         *    important.
-         *    @param string $token     Incoming characters.
-         *    @param integer $event    Lexer event type.
-         *    @return boolean          False if parse error.
-         *    @access public
-         */
-        function acceptTextToken($token, $event) {
-            return $this->_listener->addContent($token);
-        }
-        
-        /**
-         *    Incoming data to be ignored.
-         *    @param string $token     Incoming characters.
-         *    @param integer $event    Lexer event type.
-         *    @return boolean          False if parse error.
-         *    @access public
-         */
-        function ignore($token, $event) {
-            return true;
-        }
-        
-        /**
-         *    Decodes any HTML entities.
-         *    @param string $html    Incoming HTML.
-         *    @return string         Outgoing plain text.
-         *    @access private
-         */
-        function _decodeHtml($html) {
-            return strtr(
-                    $html,
-                    array_flip(get_html_translation_table(HTML_ENTITIES)));
-        }
-    }
-    
-    /**
-     *    SAX event handler.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     *    @abstract
-     */
-    class SimpleSaxListener {
-        
-        /**
-         *    Sets the document to write to.
-         *    @access public
-         */
-        function SimpleSaxListener() {
-        }
-        
-        /**
-         *    Start of element event.
-         *    @param string $name        Element name.
-         *    @param hash $attributes    Name value pairs.
-         *                               Attributes without content
-         *                               are marked as true.
-         *    @return boolean            False on parse error.
-         *    @access public
-         */
-        function startElement($name, $attributes) {
-        }
-        
-        /**
-         *    End of element event.
-         *    @param string $name        Element name.
-         *    @return boolean            False on parse error.
-         *    @access public
-         */
-        function endElement($name) {
-        }
-        
-        /**
-         *    Unparsed, but relevant data.
-         *    @param string $text        May include unparsed tags.
-         *    @return boolean            False on parse error.
-         *    @access public
-         */
-        function addContent($text) {
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/remote.php b/htdocs/TESTS/simpletest/remote.php
deleted file mode 100644 (file)
index 50165a7..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: remote.php,v 1.11 2004/08/04 22:09:39 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/browser.php');
-    require_once(dirname(__FILE__) . '/xml.php');
-    require_once(dirname(__FILE__) . '/simple_test.php');
-    /**#@-*/
-
-    /**
-     *    Runs an XML formated test on a remote server.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class RemoteTestCase {
-        var $_url;
-        var $_dry_url;
-        var $_size;
-        
-        /**
-         *    Sets the location of the remote test.
-         *    @param string $url       Test location.
-         *    @param string $dry_url   Location for dry run.
-         *    @access public
-         */
-        function RemoteTestCase($url, $dry_url = false) {
-            $this->_url = $url;
-            $this->_dry_url = $dry_url ? $dry_url : $url;
-            $this->_size = false;
-        }
-        
-        /**
-         *    Accessor for the test name for subclasses.
-         *    @return string           Name of the test.
-         *    @access public
-         */
-        function getLabel() {
-            return $this->_url;
-        }
-
-        /**
-         *    Runs the top level test for this class. Currently
-         *    reads the data as a single chunk. I'll fix this
-         *    once I have added iteration to the browser.
-         *    @param SimpleReporter $reporter    Target of test results.
-         *    @returns boolean                   True if no failures.
-         *    @access public
-         */
-        function run(&$reporter) {
-            $browser = &$this->_createBrowser();
-            $xml = $browser->get($this->_url);
-            if (! $xml) {
-                trigger_error('Cannot read remote test URL [' . $this->_url . ']');
-                return false;
-            }
-            $parser = &$this->_createParser($reporter);
-            if (! $parser->parse($xml)) {
-                trigger_error('Cannot parse incoming XML from [' . $this->_url . ']');
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Creates a new web browser object for fetching
-         *    the XML report.
-         *    @return SimpleBrowser           New browser.
-         *    @access protected
-         */
-        function &_createBrowser() {
-            return new SimpleBrowser();
-        }
-        
-        /**
-         *    Creates the XML parser.
-         *    @param SimpleReporter $reporter    Target of test results.
-         *    @return SimpleTestXmlListener      XML reader.
-         *    @access protected
-         */
-        function &_createParser(&$reporter) {
-            return new SimpleTestXmlParser($reporter);
-        }
-        
-        /**
-         *    Accessor for the number of subtests.
-         *    @return integer           Number of test cases.
-         *    @access public
-         */
-        function getSize() {
-            if ($this->_size === false) {
-                $browser = &$this->_createBrowser();
-                $xml = $browser->get($this->_dry_url);
-                if (! $xml) {
-                    trigger_error('Cannot read remote test URL [' . $this->_dry_url . ']');
-                    return false;
-                }
-                $reporter = &new SimpleReporter();
-                $parser = &$this->_createParser($reporter);
-                if (! $parser->parse($xml)) {
-                    trigger_error('Cannot parse incoming XML from [' . $this->_dry_url . ']');
-                    return false;
-                }
-                $this->_size = $reporter->getTestCaseCount();
-            }
-            return $this->_size;
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/reporter.php b/htdocs/TESTS/simpletest/reporter.php
deleted file mode 100644 (file)
index c44cfbd..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: reporter.php,v 1.31 2004/08/04 22:09:39 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/scorer.php');
-    /**#@-*/
-    
-    /**
-     *    Sample minimal test displayer. Generates only
-     *    failure messages and a pass count.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class HtmlReporter extends SimpleReporter {
-        
-        /**
-         *    Does nothing yet. The first output will
-         *    be sent on the first test start. For use
-         *    by a web browser.
-         *    @access public
-         */
-        function HtmlReporter() {
-            $this->SimpleReporter();
-        }
-        
-        /**
-         *    Paints the top of the web page setting the
-         *    title to the name of the starting test.
-         *    @param string $test_name      Name class of test.
-         *    @access public
-         */
-        function paintHeader($test_name) {
-            $this->sendNoCacheHeaders();
-            print "<html>\n<head>\n<title>$test_name</title>\n";
-            print "<style type=\"text/css\">\n";
-            print $this->_getCss() . "\n";
-            print "</style>\n";
-            print "</head>\n<body>\n";
-            print "<h1>$test_name</h1>\n";
-            flush();
-        }
-        
-        /**
-         *    Send the headers necessary to ensure the page is
-         *    reloaded on every request. Otherwise you could be
-         *    scratching your head over out of date test data.
-         *    @access public
-         *    @static
-         */
-        function sendNoCacheHeaders() {
-            if (! headers_sent()) {
-                header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
-                header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
-                header("Cache-Control: no-store, no-cache, must-revalidate");
-                header("Cache-Control: post-check=0, pre-check=0", false);
-                header("Pragma: no-cache");
-            }
-        }
-        
-        /**
-         *    Paints the CSS. Add additional styles here.
-         *    @return string            CSS code as text.
-         *    @access protected
-         */
-        function _getCss() {
-            return ".fail { color: red; } pre { background-color: lightgray; }";
-        }
-        
-        /**
-         *    Paints the end of the test with a summary of
-         *    the passes and failures.
-         *    @param string $test_name        Name class of test.
-         *    @access public
-         */
-        function paintFooter($test_name) {
-            $colour = ($this->getFailCount() + $this->getExceptionCount() > 0 ? "red" : "green");
-            print "<div style=\"";
-            print "padding: 8px; margin-top: 1em; background-color: $colour; color: white;";
-            print "\">";
-            print $this->getTestCaseProgress() . "/" . $this->getTestCaseCount();
-            print " test cases complete:\n";
-            print "<strong>" . $this->getPassCount() . "</strong> passes, ";
-            print "<strong>" . $this->getFailCount() . "</strong> fails and ";
-            print "<strong>" . $this->getExceptionCount() . "</strong> exceptions.";
-            print "</div>\n";
-            print "</body>\n</html>\n";
-        }
-        
-        /**
-         *    Paints the test failure with a breadcrumbs
-         *    trail of the nesting test suites below the
-         *    top level test.
-         *    @param string $message    Failure message displayed in
-         *                              the context of the other tests.
-         *    @access public
-         */
-        function paintFail($message) {
-            parent::paintFail($message);
-            print "<span class=\"fail\">Fail</span>: ";
-            $breadcrumb = $this->getTestList();
-            array_shift($breadcrumb);
-            print implode(" -&gt; ", $breadcrumb);
-            print " -&gt; " . htmlentities($message) . "<br />\n";
-        }
-        
-        /**
-         *    Paints a PHP error or exception.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         *    @abstract
-         */
-        function paintException($message) {
-            parent::paintException($message);
-            print "<span class=\"fail\">Exception</span>: ";
-            $breadcrumb = $this->getTestList();
-            array_shift($breadcrumb);
-            print implode(" -&gt; ", $breadcrumb);
-            print " -&gt; <strong>" . htmlentities($message) . "</strong><br />\n";
-        }
-        
-        /**
-         *    Paints formatted text such as dumped variables.
-         *    @param string $message        Text to show.
-         *    @access public
-         */
-        function paintFormattedMessage($message) {
-            echo '<pre>', htmlentities($message), '</pre>';
-        }
-    }
-    
-    /**
-     *    Sample minimal test displayer. Generates only
-     *    failure messages and a pass count. For command
-     *    line use. I've tried to make it look like JUnit,
-     *    but I wanted to output the errors as they arrived
-     *    which meant dropping the dots.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class TextReporter extends SimpleReporter {
-        
-        /**
-         *    Does nothing yet. The first output will
-         *    be sent on the first test start.
-         *    @access public
-         */
-        function TextReporter() {
-            $this->SimpleReporter();
-        }
-        
-        /**
-         *    Paints the title only.
-         *    @param string $test_name        Name class of test.
-         *    @access public
-         */
-        function paintHeader($test_name) {
-            if (!SimpleReporter::inCli()) {
-                header('Content-type: text/plain');
-            }
-            print "$test_name\n";
-            flush();
-        }
-        
-        /**
-         *    Paints the end of the test with a summary of
-         *    the passes and failures.
-         *    @param string $test_name        Name class of test.
-         *    @access public
-         */
-        function paintFooter($test_name) {
-            if ($this->getFailCount() + $this->getExceptionCount() == 0) {
-                print "OK\n";
-            } else {
-                print "FAILURES!!!\n";
-            }
-            print "Test cases run: " . $this->getTestCaseProgress() .
-                    "/" . $this->getTestCaseCount() .
-                    ", Passes: " . $this->getPassCount() .
-                    ", Failures: " . $this->getFailCount() .
-                    ", Exceptions: " . $this->getExceptionCount() . "\n";
-                    
-        }
-        
-        /**
-         *    Paints the test failure as a stack trace.
-         *    @param string $message        Failure message displayed in
-         *                           the context of the other tests.
-         *    @access public
-         */
-        function paintFail($message) {
-            parent::paintFail($message);
-            print $this->getFailCount() . ") $message\n";
-            $breadcrumb = $this->getTestList();
-            array_shift($breadcrumb);
-            print "\tin " . implode("\n\tin ", array_reverse($breadcrumb));
-            print "\n";
-        }
-        
-        /**
-         *    Paints a PHP error or exception.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         *    @abstract
-         */
-        function paintException($message) {
-            parent::paintException($message);
-            print "Exception " . $this->getExceptionCount() . "!\n$message\n";
-        }
-        
-        /**
-         *    Paints formatted text such as dumped variables.
-         *    @param string $message        Text to show.
-         *    @access public
-         */
-        function paintFormattedMessage($message) {
-            print "$message\n";
-            flush();
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/scorer.php b/htdocs/TESTS/simpletest/scorer.php
deleted file mode 100644 (file)
index 9d8692c..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: scorer.php,v 1.2 2004/08/04 23:48:51 lastcraft Exp $
-     */
-    
-    /**
-     *    Can recieve test events and display them. Display
-     *    is achieved by making display methods available
-     *    and visiting the incoming event.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     *    @abstract
-     */
-    class SimpleScorer {
-        var $_passes;
-        var $_fails;
-        var $_exceptions;
-        var $_is_dry_run;
-        
-        /**
-         *    Starts the test run with no results.
-         *    @access public
-         */
-        function SimpleScorer() {
-            $this->_passes = 0;
-            $this->_fails = 0;
-            $this->_exceptions = 0;
-            $this->_is_dry_run = false;
-        }
-        
-        /**
-         *    Signals that the next evaluation will be a dry
-         *    run. That is, the structure events will be
-         *    recorded, but no tests will be run.
-         */
-        function makeDry($is_dry = true) {
-            $this->_is_dry_run = $is_dry;
-        }
-        
-        /**
-         *    Invokes a single test method on the test case.
-         *    This call back allows the reporter to decide if
-         *    it actually wants to run the test.
-         *    @param SimpleRunner $runner    Test case to run test on.
-         *    @param string $method          Name of test method.
-         *    @access public
-         */
-        function invoke(&$runner, $method) {
-            if (! $this->_is_dry_run) {
-                $runner->invoke($method);
-            }
-        }
-
-        /**
-         *    Accessor for current status. Will be false
-         *    if there have been any failures or exceptions.
-         *    Used for command line tools.
-         *    @return boolean        True if no failures.
-         *    @access public
-         */
-        function getStatus() {
-            if ($this->_exceptions + $this->_fails > 0) {
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Paints the start of a test method.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintMethodStart($test_name) {
-        }
-        
-        /**
-         *    Paints the end of a test method.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintMethodEnd($test_name) {
-        }
-         
-        /**
-         *    Paints the start of a test case.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintCaseStart($test_name) {
-        }
-        
-        /**
-         *    Paints the end of a test case.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintCaseEnd($test_name) {
-        }
-       
-        /**
-         *    Paints the start of a group test.
-         *    @param string $test_name     Name of test or other label.
-         *    @param integer $size         Number of test cases starting.
-         *    @access public
-         */
-        function paintGroupStart($test_name, $size) {
-        }
-        
-        /**
-         *    Paints the end of a group test.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintGroupEnd($test_name) {
-        }
-        
-        /**
-         *    Increments the pass count.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintPass($message) {
-            $this->_passes++;
-        }
-        
-        /**
-         *    Increments the fail count.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintFail($message) {
-            $this->_fails++;
-        }
-        
-        /**
-         *    Deals with PHP 4 throwing an error.
-         *    @param string $message    Text of error formatted by
-         *                              the test case.
-         *    @access public
-         */
-        function paintError($message) {
-            $this->paintException($message);
-        }
-        
-        /**
-         *    Deals with PHP 5 throwing an exception
-         *    This isn't really implemented yet.
-         *    @param Exception $exception     Object thrown.
-         *    @access public
-         */
-        function paintException($exception) {
-            $this->_exceptions++;
-        }
-        
-        /**
-         *    Accessor for the number of passes so far.
-         *    @return integer       Number of passes.
-         *    @access public
-         */
-        function getPassCount() {
-            return $this->_passes;
-        }
-        
-        /**
-         *    Accessor for the number of fails so far.
-         *    @return integer       Number of fails.
-         *    @access public
-         */
-        function getFailCount() {
-            return $this->_fails;
-        }
-        
-        /**
-         *    Accessor for the number of untrapped errors
-         *    so far.
-         *    @return integer       Number of exceptions.
-         *    @access public
-         */
-        function getExceptionCount() {
-            return $this->_exceptions;
-        }
-        
-        /**
-         *    Paints a simple supplementary message.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintMessage($message) {
-        }
-        
-        /**
-         *    Paints a formatted ASCII message such as a
-         *    variable dump.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintFormattedMessage($message) {
-        }
-        
-        /**
-         *    By default just ignores user generated events.
-         *    @param string $type        Event type as text.
-         *    @param mixed $payload      Message or object.
-         *    @access public
-         */
-        function paintSignal($type, &$payload) {
-        }
-    }
-
-    /**
-     *    Recipient of generated test messages that can display
-     *    page footers and headers. Also keeps track of the
-     *    test nesting. This is the main base class on which
-     *    to build the finished test (page based) displays.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class SimpleReporter extends SimpleScorer {
-        var $_test_stack;
-        var $_size;
-        var $_progress;
-        
-        /**
-         *    Starts the display with no results in.
-         *    @access public
-         */
-        function SimpleReporter() {
-            $this->SimpleScorer();
-            $this->_test_stack = array();
-            $this->_size = null;
-            $this->_progress = 0;
-        }
-        
-        /**
-         *    Paints the start of a group test. Will also paint
-         *    the page header and footer if this is the
-         *    first test. Will stash the size if the first
-         *    start.
-         *    @param string $test_name   Name of test that is starting.
-         *    @param integer $size       Number of test cases starting.
-         *    @access public
-         */
-        function paintGroupStart($test_name, $size) {
-            if (! isset($this->_size)) {
-                $this->_size = $size;
-            }
-            if (count($this->_test_stack) == 0) {
-                $this->paintHeader($test_name);
-            }
-            $this->_test_stack[] = $test_name;
-        }
-        
-        /**
-         *    Paints the end of a group test. Will paint the page
-         *    footer if the stack of tests has unwound.
-         *    @param string $test_name   Name of test that is ending.
-         *    @param integer $progress   Number of test cases ending.
-         *    @access public
-         */
-        function paintGroupEnd($test_name) {
-            array_pop($this->_test_stack);
-            if (count($this->_test_stack) == 0) {
-                $this->paintFooter($test_name);
-            }
-        }
-        
-        /**
-         *    Paints the start of a test case. Will also paint
-         *    the page header and footer if this is the
-         *    first test. Will stash the size if the first
-         *    start.
-         *    @param string $test_name   Name of test that is starting.
-         *    @access public
-         */
-        function paintCaseStart($test_name) {
-            if (! isset($this->_size)) {
-                $this->_size = 1;
-            }
-            if (count($this->_test_stack) == 0) {
-                $this->paintHeader($test_name);
-            }
-            $this->_test_stack[] = $test_name;
-        }
-        
-        /**
-         *    Paints the end of a test case. Will paint the page
-         *    footer if the stack of tests has unwound.
-         *    @param string $test_name   Name of test that is ending.
-         *    @access public
-         */
-        function paintCaseEnd($test_name) {
-            $this->_progress++;
-            array_pop($this->_test_stack);
-            if (count($this->_test_stack) == 0) {
-                $this->paintFooter($test_name);
-            }
-        }
-        
-        /**
-         *    Paints the start of a test method.
-         *    @param string $test_name   Name of test that is starting.
-         *    @access public
-         */
-        function paintMethodStart($test_name) {
-            $this->_test_stack[] = $test_name;
-        }
-        
-        /**
-         *    Paints the end of a test method. Will paint the page
-         *    footer if the stack of tests has unwound.
-         *    @param string $test_name   Name of test that is ending.
-         *    @access public
-         */
-        function paintMethodEnd($test_name) {
-            array_pop($this->_test_stack);
-        }
-        
-        /**
-         *    Paints the test document header.
-         *    @param string $test_name     First test top level
-         *                                 to start.
-         *    @access public
-         *    @abstract
-         */
-        function paintHeader($test_name) {
-        }
-        
-        /**
-         *    Paints the test document footer.
-         *    @param string $test_name        The top level test.
-         *    @access public
-         *    @abstract
-         */
-        function paintFooter($test_name) {
-        }
-        
-        /**
-         *    Accessor for internal test stack. For
-         *    subclasses that need to see the whole test
-         *    history for display purposes.
-         *    @return array     List of methods in nesting order.
-         *    @access public
-         */
-        function getTestList() {
-            return $this->_test_stack;
-        }
-        
-        /**
-         *    Accessor for total test size in number
-         *    of test cases. Null until the first
-         *    test is started.
-         *    @return integer   Total number of cases at start.
-         *    @access public
-         */
-        function getTestCaseCount() {
-            return $this->_size;
-        }
-        
-        /**
-         *    Accessor for the number of test cases
-         *    completed so far.
-         *    @return integer   Number of ended cases.
-         *    @access public
-         */
-        function getTestCaseProgress() {
-            return $this->_progress;
-        }
-        
-        /**
-         *    Static check for running in the comand line.
-         *    @return boolean        True if CLI.
-         *    @access public
-         *    @static
-         */
-        function inCli() {
-            return php_sapi_name() == 'cli';
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/shell_tester.php b/htdocs/TESTS/simpletest/shell_tester.php
deleted file mode 100644 (file)
index 1bc1fde..0000000
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: shell_tester.php,v 1.14 2004/08/17 18:18:32 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/simple_test.php');
-    /**#@-*/
-
-    /**
-     *    Wrapper for exec() functionality.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class SimpleShell {
-        var $_output;
-
-        /**
-         *    Executes the shell comand and stashes the output.
-         *    @access public
-         */
-        function SimpleShell() {
-            $this->_output = false;
-        }
-
-        /**
-         *    Actually runs the command. Does not trap the
-         *    error stream output as this need PHP 4.3+.
-         *    @param string $command    The actual command line
-         *                              to run.
-         *    @return integer           Exit code.
-         *    @access public
-         */
-        function execute($command) {
-            $this->_output = false;
-            exec($command, $this->_output, $ret);
-            return $ret;
-        }
-
-        /**
-         *    Accessor for the last output.
-         *    @return string        Output as text.
-         *    @access public
-         */
-        function getOutput() {
-            return implode("\n", $this->_output);
-        }
-
-        /**
-         *    Accessor for the last output.
-         *    @return array         Output as array of lines.
-         *    @access public
-         */
-               function getOutputAsList() {
-                       return $this->_output;
-               }
-    }
-
-    /**
-     *    Test case for testing of command line scripts and
-     *    utilities. Usually scripts taht are external to the
-     *    PHP code, but support it in some way.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class ShellTestCase extends SimpleTestCase {
-        var $_current_shell;
-        var $_last_status;
-        var $_last_command;
-
-        /**
-         *    Creates an empty test case. Should be subclassed
-         *    with test methods for a functional test case.
-         *    @param string $label     Name of test case. Will use
-         *                             the class name if none specified.
-         *    @access public
-         */
-        function ShellTestCase($label = false) {
-            $this->SimpleTestCase($label);
-            $this->_current_shell = &$this->_createShell();
-            $this->_last_status = false;
-            $this->_last_command = '';
-        }
-
-        /**
-         *    Executes a command and buffers the results.
-         *    @param string $command     Command to run.
-         *    @return boolean            True if zero exit code.
-         *    @access public
-         */
-        function execute($command) {
-            $shell = &$this->_getShell();
-            $this->_last_status = $shell->execute($command);
-            $this->_last_command = $command;
-            return ($this->_last_status === 0);
-        }
-
-        /**
-         *    Dumps the output of the last command.
-         *    @access public
-         */
-        function dumpOutput() {
-            $this->dump($this->getOutput());
-        }
-
-        /**
-         *    Accessor for the last output.
-         *    @return string        Output as text.
-         *    @access public
-         */
-               function getOutput() {
-            $shell = &$this->_getShell();
-            return $shell->getOutput();
-               }
-
-        /**
-         *    Accessor for the last output.
-         *    @return array         Output as array of lines.
-         *    @access public
-         */
-               function getOutputAsList() {
-            $shell = &$this->_getShell();
-            return $shell->getOutputAsList();
-               }
-
-        /**
-         *    Tests the last status code from the shell.
-         *    @param integer $status   Expected status of last
-         *                             command.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertExitCode($status, $message = "%s") {
-            $message = sprintf($message, "Expected status code of [$status] from [" .
-                    $this->_last_command . "], but got [" .
-                    $this->_last_status . "]");
-            return $this->assertTrue($status === $this->_last_status, $message);
-        }
-
-        /**
-         *    Attempt to exactly match the combined STDERR and
-         *    STDOUT output.
-         *    @param string $expected  Expected output.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertOutput($expected, $message = "%s") {
-            $shell = &$this->_getShell();
-            return $this->assertExpectation(
-                    new EqualExpectation($expected),
-                    $shell->getOutput(),
-                    $message);
-        }
-
-        /**
-         *    Scans the output for a Perl regex. If found
-         *    anywhere it passes, else it fails.
-         *    @param string $pattern    Regex to search for.
-         *    @param string $message    Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertOutputPattern($pattern, $message = "%s") {
-            $shell = &$this->_getShell();
-            return $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    $shell->getOutput(),
-                    $message);
-        }
-
-        /**
-         *    If a Perl regex is found anywhere in the current
-         *    output then a failure is generated, else a pass.
-         *    @param string $pattern    Regex to search for.
-         *    @param $message           Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertNoOutputPattern($pattern, $message = "%s") {
-            $shell = &$this->_getShell();
-            return $this->assertExpectation(
-                    new UnwantedPatternExpectation($pattern),
-                    $shell->getOutput(),
-                    $message);
-        }
-
-        /**
-         *    File existence check.
-         *    @param string $path      Full filename and path.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertFileExists($path, $message = "%s") {
-            $message = sprintf($message, "File [$path] should exist");
-            return $this->assertTrue(file_exists($path), $message);
-        }
-
-        /**
-         *    File non-existence check.
-         *    @param string $path      Full filename and path.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertFileNotExists($path, $message = "%s") {
-            $message = sprintf($message, "File [$path] should not exist");
-            return $this->assertFalse(file_exists($path), $message);
-        }
-
-        /**
-         *    Scans a file for a Perl regex. If found
-         *    anywhere it passes, else it fails.
-         *    @param string $pattern    Regex to search for.
-         *    @param string $path       Full filename and path.
-         *    @param string $message    Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertFilePattern($pattern, $path, $message = "%s") {
-            $shell = &$this->_getShell();
-            return $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    implode('', file($path)),
-                    $message);
-        }
-
-        /**
-         *    If a Perl regex is found anywhere in the named
-         *    file then a failure is generated, else a pass.
-         *    @param string $pattern    Regex to search for.
-         *    @param string $path       Full filename and path.
-         *    @param string $message    Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertNoFilePattern($pattern, $path, $message = "%s") {
-            $shell = &$this->_getShell();
-            return $this->assertExpectation(
-                    new UnwantedPatternExpectation($pattern),
-                    implode('', file($path)),
-                    $message);
-        }
-
-        /**
-         *    Accessor for current shell. Used for testing the
-         *    the tester itself.
-         *    @return Shell        Current shell.
-         *    @access protected
-         */
-        function &_getShell() {
-            return $this->_current_shell;
-        }
-
-        /**
-         *    Factory for the shell to run the command on.
-         *    @return Shell        New shell object.
-         *    @access protected
-         */
-        function &_createShell() {
-            return new SimpleShell();
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/simple_test.php b/htdocs/TESTS/simpletest/simple_test.php
deleted file mode 100644 (file)
index 44b2dba..0000000
+++ /dev/null
@@ -1,628 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: simple_test.php,v 1.71 2004/08/21 00:38:04 lastcraft Exp $
-     */
-    
-    /**#@+
-     * Includes SimpleTest files and defined the root constant
-     * for dependent libraries.
-     */
-    require_once(dirname(__FILE__) . '/errors.php');
-    require_once(dirname(__FILE__) . '/options.php');
-    require_once(dirname(__FILE__) . '/scorer.php');
-    require_once(dirname(__FILE__) . '/expectation.php');
-    require_once(dirname(__FILE__) . '/dumper.php');
-    if (! defined('SIMPLE_TEST')) {
-        define('SIMPLE_TEST', dirname(__FILE__) . '/');
-    }
-    /**#@-*/
-
-    /**
-     *    The standard runner. Will run every method starting
-     *    with test as well as the setUp() and tearDown()
-     *    before and after each test method. Basically the
-     *    Mediator pattern.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class SimpleRunner {
-        var $_test_case;
-        var $_scorer;
-        
-        /**
-         *    Takes in the test case and reporter to mediate between.
-         *    @param SimpleTestCase $test_case  Test case to run.
-         *    @param SimpleScorer $scorer       Reporter to receive events.
-         */
-        function SimpleRunner(&$test_case, &$scorer) {
-            $this->_test_case = &$test_case;
-            $this->_scorer = &$scorer;
-        }
-        
-        /**
-         *    Accessor for test case being run.
-         *    @return SimpleTestCase    Test case.
-         *    @access protected
-         */
-        function &_getTestCase() {
-            return $this->_test_case;
-        }
-        
-        /**
-         *    Runs the test methods in the test case.
-         *    @param SimpleTest $test_case    Test case to run test on.
-         *    @param string $method           Name of test method.
-         *    @access public
-         */
-        function run() {
-            $methods = get_class_methods(get_class($this->_test_case));
-            foreach ($methods as $method) {
-                if (! $this->_isTest($method)) {
-                    continue;
-                }
-                if ($this->_isConstructor($method)) {
-                    continue;
-                }
-                $this->_scorer->paintMethodStart($method);
-                $this->_scorer->invoke($this, $method);
-                $this->_scorer->paintMethodEnd($method);
-            }
-        }
-        
-        /**
-         *    Tests to see if the method is the constructor and
-         *    so should be ignored.
-         *    @param string $method        Method name to try.
-         *    @return boolean              True if constructor.
-         *    @access protected
-         */
-        function _isConstructor($method) {
-            return SimpleTestCompatibility::isA(
-                    $this->_test_case,
-                    strtolower($method));
-        }
-        
-        /**
-         *    Tests to see if the method is a test that should
-         *    be run. Currently any method that starts with 'test'
-         *    is a candidate.
-         *    @param string $method        Method name to try.
-         *    @return boolean              True if test method.
-         *    @access protected
-         */
-        function _isTest($method) {
-            return strtolower(substr($method, 0, 4)) == 'test';
-        }
-        
-        /**
-         *    Invokes a test method and buffered with setUp()
-         *    and tearDown() calls.
-         *    @param string $method    Test method to call.
-         *    @access public
-         */
-        function invoke($method) {
-            $this->_test_case->before();
-            $this->_test_case->setUp();
-            $this->_test_case->$method();
-            $this->_test_case->tearDown();
-            $this->_test_case->after();
-        }
-
-        /**
-         *    Paints the start of a test method.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintMethodStart($test_name) {
-            $this->_scorer->paintMethodStart($test_name);
-        }
-        
-        /**
-         *    Paints the end of a test method.
-         *    @param string $test_name     Name of test or other label.
-         *    @access public
-         */
-        function paintMethodEnd($test_name) {
-            $this->_scorer->paintMethodEnd($test_name);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintPass($message) {
-            $this->_scorer->paintPass($message);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintFail($message) {
-            $this->_scorer->paintFail($message);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $message    Text of error formatted by
-         *                              the test case.
-         *    @access public
-         */
-        function paintError($message) {
-            $this->_scorer->paintError($message);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param Exception $exception     Object thrown.
-         *    @access public
-         */
-        function paintException($exception) {
-            $this->_scorer->paintException($exception);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintMessage($message) {
-            $this->_scorer->paintMessage($message);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintFormattedMessage($message) {
-            $this->_scorer->paintFormattedMessage($message);
-        }
-        
-        /**
-         *    Chains to the wrapped reporter.
-         *    @param string $type        Event type as text.
-         *    @param mixed $payload      Message or object.
-         *    @return boolean            Should return false if this
-         *                               type of signal should fail the
-         *                               test suite.
-         *    @access public
-         */
-        function paintSignal($type, &$payload) {
-            $this->_scorer->paintSignal($type, $payload);
-        }
-    }
-
-    /**
-     *    Extension that traps errors into an error queue.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class SimpleErrorTrappingRunner extends SimpleRunner {
-        
-        /**
-         *    Takes in the test case and reporter to mediate between.
-         *    @param SimpleTestCase $test_case  Test case to run.
-         *    @param SimpleScorer $scorer       Reporter to receive events.
-         */
-        function SimpleErrorTrappingRunner(&$test_case, &$scorer) {
-            $this->SimpleRunner($test_case, $scorer);
-        }
-        
-        /**
-         *    Invokes a test method and dispatches any
-         *    untrapped errors. Called back from
-         *    the visiting runner.
-         *    @param string $method    Test method to call.
-         *    @access public
-         */
-        function invoke($method) {
-            set_error_handler('simpleTestErrorHandler');
-            parent::invoke($method);
-            $queue = &SimpleErrorQueue::instance();
-            while (list($severity, $message, $file, $line, $globals) = $queue->extract()) {
-                $test_case = &$this->_getTestCase();
-                $test_case->error($severity, $message, $file, $line, $globals);
-            }
-            restore_error_handler();
-        }
-    }
-    
-    /**
-     *    Basic test case. This is the smallest unit of a test
-     *    suite. It searches for
-     *    all methods that start with the the string "test" and
-     *    runs them. Working test cases extend this class.
-        *    @package          SimpleTest
-        *    @subpackage       UnitTester
-     */
-    class SimpleTestCase {
-        var $_label;
-        var $_runner;
-        
-        /**
-         *    Sets up the test with no display.
-         *    @param string $label    If no test name is given then
-         *                            the class name is used.
-         *    @access public
-         */
-        function SimpleTestCase($label = false) {
-            $this->_label = $label ? $label : get_class($this);
-            $this->_runner = false;
-        }
-        
-        /**
-         *    Accessor for the test name for subclasses.
-         *    @return string           Name of the test.
-         *    @access public
-         *    @static
-         */
-        function getLabel() {
-            return $this->_label;
-        }
-        
-        /**
-         *    Can modify the incoming reporter so as to run
-         *    the tests differently. This version simply
-         *    passes it straight through.
-         *    @param SimpleReporter $reporter    Incoming observer.
-         *    @return SimpleReporter
-         *    @access protected
-         */
-        function &_createRunner(&$reporter) {
-            return new SimpleErrorTrappingRunner($this, $reporter);
-        }
-        
-        /**
-         *    Uses reflection to run every method within itself
-         *    starting with the string "test".
-         *    @param SimpleReporter $reporter    Current test reporter.
-         *    @access public
-         */
-        function run(&$reporter) {
-            $reporter->paintCaseStart($this->getLabel());
-            $this->_runner = &$this->_createRunner($reporter);
-            $this->_runner->run();
-            $reporter->paintCaseEnd($this->getLabel());
-            return $reporter->getStatus();
-        }
-        
-        /**
-         *    Runs test case specific code before the user setUp().
-         *    For extension writers not wanting to interfere with setUp().
-         *    @access protected
-         */
-        function before() {
-        }
-          
-        /**
-         *    Runs test case specific code after the user tearDown().
-         *    For extension writers not wanting to interfere with user tests.
-         *    @access protected
-         */
-        function after() {
-        }
-      
-        /**
-         *    Sets up unit test wide variables at the start
-         *    of each test method. To be overridden in
-         *    actual user test cases.
-         *    @access public
-         */
-        function setUp() {
-        }
-        
-        /**
-         *    Clears the data set in the setUp() method call.
-         *    To be overridden by the user in actual user test cases.
-         *    @access public
-         */
-        function tearDown() {
-        }
-        
-        /**
-         *    Sends a pass event with a message.
-         *    @param string $message        Message to send.
-         *    @access public
-         */
-        function pass($message = "Pass") {
-            $this->_runner->paintPass($message . $this->getAssertionLine(' at line [%d]'));
-        }
-        
-        /**
-         *    Sends a fail event with a message.
-         *    @param string $message        Message to send.
-         *    @access public
-         */
-        function fail($message = "Fail") {
-            $this->_runner->paintFail($message . $this->getAssertionLine(' at line [%d]'));
-        }
-        
-        /**
-         *    Formats a PHP error and dispatches it to the
-         *    runner.
-         *    @param integer $severity  PHP error code.
-         *    @param string $message    Text of error.
-         *    @param string $file       File error occoured in.
-         *    @param integer $line      Line number of error.
-         *    @param hash $globals      PHP super global arrays.
-         *    @access public
-         */
-        function error($severity, $message, $file, $line, $globals) {
-            $severity = SimpleErrorQueue::getSeverityAsString($severity);
-            $this->_runner->paintError(
-                    "Unexpected PHP error [$message] severity [$severity] in [$file] line [$line]");
-        }
-        
-        /**
-         *    Sends a user defined event to the test runner.
-         *    This is for small scale extension where
-         *    both the test case and either the runner or
-         *    display are subclassed.
-         *    @param string $type       Type of event.
-         *    @param mixed $payload     Object or message to deliver.
-         *    @access public
-         */
-        function signal($type, &$payload) {
-            $this->_runner->paintSignal($type, $payload);
-        }
-        
-        /**
-         *    Cancels any outstanding errors.
-         *    @access public
-         */
-        function swallowErrors() {
-            $queue = &SimpleErrorQueue::instance();
-            $queue->clear();
-        }
-        
-        /**
-         *    Runs an expectation directly, for extending the
-         *    tests with new expectation classes.
-         *    @param SimpleExpectation $expectation  Expectation subclass.
-         *    @param mixed $test_value               Value to compare.
-         *    @param string $message                 Message to display.
-         *    @return boolean                        True on pass
-         *    @access public
-         */
-        function assertExpectation(&$expectation, $test_value, $message = '%s') {
-            return $this->assertTrue(
-                    $expectation->test($test_value),
-                    sprintf($message, $expectation->overlayMessage($test_value)));
-        }
-        
-        /**
-         *    Called from within the test methods to register
-         *    passes and failures.
-         *    @param boolean $result    Pass on true.
-         *    @param string $message    Message to display describing
-         *                              the test state.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertTrue($result, $message = false) {
-            if (! $message) {
-                $message = 'True assertion got ' . ($result ? 'True' : 'False');
-            }
-            if ($result) {
-                $this->pass($message);
-                return true;
-            } else {
-                $this->fail($message);
-                return false;
-            }
-        }
-        
-        /**
-         *    Will be true on false and vice versa. False
-         *    is the PHP definition of false, so that null,
-         *    empty strings, zero and an empty array all count
-         *    as false.
-         *    @param boolean $result    Pass on false.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertFalse($result, $message = false) {
-            if (! $message) {
-                $message = 'False assertion got ' . ($result ? 'True' : 'False');
-            }
-            return ! $this->assertTrue(! $result, $message);
-        }
-        
-        /**
-         *    Uses a stack trace to find the line of an assertion.
-         *    @param string $format    String formatting.
-         *    @param array $stack      Stack frames top most first. Only
-         *                             needed if not using the PHP
-         *                             backtrace function.
-         *    @return string           Line number of first assert*
-         *                             method embedded in format string.
-         *    @access public
-         */
-        function getAssertionLine($format = '%d', $stack = false) {
-            if ($stack === false) {
-                $stack = SimpleTestCompatibility::getStackTrace();
-            }
-            return SimpleDumper::getFormattedAssertionLine($stack, $format);
-        }
-        
-        /**
-         *    Sends a formatted dump of a variable to the
-         *    test suite for those emergency debugging
-         *    situations.
-         *    @param mixed $variable    Variable to display.
-         *    @param string $message    Message to display.
-         *    @return mixed             The original variable.
-         *    @access public
-         */
-        function dump($variable, $message = false) {
-            $formatted = SimpleDumper::dump($variable);
-            if ($message) {
-                $formatted = $message . "\n" . $formatted;
-            }
-            $this->_runner->paintFormattedMessage($formatted);
-            return $variable;
-        }
-        
-        /**
-         *    Dispatches a text message straight to the
-         *    test suite. Useful for status bar displays.
-         *    @param string $message        Message to show.
-         *    @access public
-         */
-        function sendMessage($message) {
-            $this->_runner->PaintMessage($message);
-        }
-        
-        /**
-         *    Accessor for the number of subtests.
-         *    @return integer           Number of test cases.
-         *    @access public
-         *    @static
-         */
-        function getSize() {
-            return 1;
-        }
-    }
-    
-    /**
-     *    This is a composite test class for combining
-     *    test cases and other RunnableTest classes into
-     *    a group test.
-        *    @package          SimpleTest
-        *    @subpackage       UnitTester
-     */
-    class GroupTest {
-        var $_label;
-        var $_test_cases;
-        
-        /**
-         *    Sets the name of the test suite.
-         *    @param string $label    Name sent at the start and end
-         *                            of the test.
-         *    @access public
-         */
-        function GroupTest($label) {
-            $this->_label = $label;
-            $this->_test_cases = array();
-        }
-        
-        /**
-         *    Accessor for the test name for subclasses.
-         *    @return string           Name of the test.
-         *    @access public
-         */
-        function getLabel() {
-            return $this->_label;
-        }
-        
-        /**
-         *    Adds a test into the suite. Can be either a group
-         *    test or some other unit test.
-         *    @param SimpleTestCase $test_case  Suite or individual test
-         *                                      case implementing the
-         *                                      runnable test interface.
-         *    @access public
-         */
-        function addTestCase(&$test_case) {
-            $this->_test_cases[] = &$test_case;
-        }
-         
-        /**
-         *    Adds a test into the suite by class name. The class will
-         *    be instantiated as needed.
-         *    @param SimpleTestCase $test_case  Suite or individual test
-         *                                      case implementing the
-         *                                      runnable test interface.
-         *    @access public
-         */
-        function addTestClass($class) {
-            $this->_test_cases[] = $class;
-        }
-       
-        /**
-         *    Builds a group test from a library of test cases.
-         *    The new group is composed into this one.
-         *    @param string $test_file    File name of library with
-         *                                test case classes.
-         *    @access public
-         */
-        function addTestFile($test_file) {
-            $existing_classes = get_declared_classes();
-            require($test_file);
-            $group = new GroupTest($test_file);
-            foreach (get_declared_classes() as $class) {
-                if (in_array($class, $existing_classes)) {
-                    continue;
-                }
-                if (! $this->_isTestCase($class)) {
-                    continue;
-                }
-                if (SimpleTestOptions::isIgnored($class)) {
-                    continue;
-                }
-                $group->addTestClass($class);
-            }
-            $this->addTestCase($group);
-        }
-        
-        /**
-         *    Test to see if a class is derived from the
-         *    TestCase class.
-         *    @param string $class            Class name.
-         *    @access private
-         */
-        function _isTestCase($class) {
-            while ($class = get_parent_class($class)) {
-                if (strtolower($class) == "simpletestcase") {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Invokes run() on all of the held test cases, instantiating
-         *    them if necessary.
-         *    @param SimpleReporter $reporter    Current test reporter.
-         *    @access public
-         */
-        function run(&$reporter) {
-            $reporter->paintGroupStart($this->getLabel(), $this->getSize());
-            for ($i = 0; $i < count($this->_test_cases); $i++) {
-                if (is_string($this->_test_cases[$i])) {
-                    $class = $this->_test_cases[$i];
-                    $test = &new $class();
-                    $test->run($reporter);
-                } else {
-                    $this->_test_cases[$i]->run($reporter);
-                }
-            }
-            $reporter->paintGroupEnd($this->getLabel());
-            return $reporter->getStatus();
-        }
-        
-        /**
-         *    Number of contained test cases.
-         *    @return integer     Total count of cases in the group.
-         *    @access public
-         */
-        function getSize() {
-            $count = 0;
-            foreach ($this->_test_cases as $case) {
-                if (is_string($case)) {
-                    $count++;
-                } else {
-                    $count += $case->getSize();
-                }
-            }
-            return $count;
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/socket.php b/htdocs/TESTS/simpletest/socket.php
deleted file mode 100644 (file)
index 9f3900d..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     MockObjects
-     * @version        $Id: socket.php,v 1.21 2004/06/30 22:13:08 lastcraft Exp $
-     */
-    
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once(dirname(__FILE__) . '/options.php');
-    /**#@-*/
-    
-    /**
-     *    Stashes an error for later. Useful for constructors
-     *    until PHP gets exceptions.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class StickyError {
-        var $_error = 'Constructor not chained';
-        
-        /**
-         *    Sets the error to empty.
-         *    @access public
-         */
-        function StickyError() {
-            $this->_clearError();
-        }
-        
-        /**
-         *    Test for an outstanding error.
-         *    @return boolean           True if there is an error.
-         *    @access public
-         */
-        function isError() {
-            return ($this->_error != '');
-        }
-        
-        /**
-         *    Accessor for an outstanding error.
-         *    @return string     Empty string if no error otherwise
-         *                       the error message.
-         *    @access public
-         */
-        function getError() {
-            return $this->_error;
-        }
-        
-        /**
-         *    Sets the internal error.
-         *    @param string       Error message to stash.
-         *    @access protected
-         */
-        function _setError($error) {
-            $this->_error = $error;
-        }
-        
-        /**
-         *    Resets the error state to no error.
-         *    @access protected
-         */
-        function _clearError() {
-            $this->_setError('');
-        }
-    }
-    
-    /**
-     *    Wrapper for TCP/IP socket.
-     *    @package SimpleTest
-     *    @subpackage WebTester
-     */
-    class SimpleSocket extends StickyError {
-        var $_handle;
-        var $_is_open;
-        var $_sent;
-        
-        /**
-         *    Opens a socket for reading and writing.
-         *    @param string $host      Hostname to send request to.
-         *    @param integer $port     Port on remote machine to open.
-         *    @param integer $timeout  Connection timeout in seconds.
-         *    @access public
-         */
-        function SimpleSocket($host, $port, $timeout) {
-            $this->StickyError();
-            $this->_is_open = false;
-            $this->_sent = '';
-            if (! ($this->_handle = $this->_openSocket($host, $port, $error_number, $error, $timeout))) {
-                $this->_setError("Cannot open [$host:$port] with [$error] within [$timeout] seconds");
-                return;
-            }
-            $this->_is_open = true;
-            SimpleTestCompatibility::setTimeout($this->_handle, $timeout);
-        }
-        
-        /**
-         *    Writes some data to the socket and saves alocal copy.
-         *    @param string $message       String to send to socket.
-         *    @return boolean              True if successful.
-         *    @access public
-         */
-        function write($message) {
-            if ($this->isError() || ! $this->isOpen()) {
-                return false;
-            }
-            $count = fwrite($this->_handle, $message);
-            if (! $count) {
-                if ($count === false) {
-                    $this->_setError('Cannot write to socket');
-                    $this->close();
-                }
-                return false;
-            }
-            fflush($this->_handle);
-            $this->_sent .= $message;
-            return true;
-        }
-        
-        /**
-         *    Reads data from the socket.
-         *    @param integer $block_size       Size of chunk to read.
-         *    @return integer                  Incoming bytes. False
-         *                                     on error.
-         *    @access public
-         */
-        function read($block_size = 255) {
-            if ($this->isError() || ! $this->isOpen()) {
-                return false;
-            }
-            $raw = fread($this->_handle, $block_size);
-            if ($raw === false) {
-                $this->_setError('Cannot read from socket');
-                $this->close();
-            }
-            return $raw;
-        }
-        
-        /**
-         *    Accessor for socket open state.
-         *    @return boolean           True if open.
-         *    @access public
-         */
-        function isOpen() {
-            return $this->_is_open;
-        }
-        
-        /**
-         *    Closes the socket preventing further reads.
-         *    Cannot be reopened once closed.
-         *    @return boolean           True if successful.
-         *    @access public
-         */
-        function close() {
-            $this->_is_open = false;
-            return fclose($this->_handle);
-        }
-        
-        /**
-         *    Accessor for content so far.
-         *    @return string        Bytes sent only.
-         *    @access public
-         */
-        function getSent() {
-            return $this->_sent;
-        }
-        
-        /**
-         *    Actually opens the low level socket.
-         *    @param string $host          Host to connect to.
-         *    @param integer $port         Port on host.
-         *    @param integer $error_number Recipient of error code.
-         *    @param string $error         Recipoent of error message.
-         *    @param integer $timeout      Maximum time to wait for connection.
-         *    @access protected
-         */
-        function _openSocket($host, $port, &$error_number, &$error, $timeout) {
-            return @fsockopen($host, $port, $error_number, $error, $timeout);
-        }
-    }
-    
-    /**
-     *    Wrapper for TCP/IP socket over TLS.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleSecureSocket extends SimpleSocket {
-        
-        /**
-         *    Opens a secure socket for reading and writing.
-         *    @param string $host      Hostname to send request to.
-         *    @param integer $port     Port on remote machine to open.
-         *    @param integer $timeout  Connection timeout in seconds.
-         *    @access public
-         */
-        function SimpleSecureSocket($host, $port, $timeout) {
-            $this->SimpleSocket($host, $port, $timeout);
-        }
-        
-        /**
-         *    Actually opens the low level socket.
-         *    @param string $host          Host to connect to.
-         *    @param integer $port         Port on host.
-         *    @param integer $error_number Recipient of error code.
-         *    @param string $error         Recipient of error message.
-         *    @param integer $timeout      Maximum time to wait for connection.
-         *    @access protected
-         */
-        function _openSocket($host, $port, &$error_number, &$error, $timeout) {
-            return parent::_openSocket("tls://$host", $port, $error_number, $error, $timeout);
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/tag.php b/htdocs/TESTS/simpletest/tag.php
deleted file mode 100644 (file)
index 159fc91..0000000
+++ /dev/null
@@ -1,1155 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest.
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: tag.php,v 1.65 2004/08/18 23:10:19 lastcraft Exp $
-     */
-     
-    /**#@+
-     * include SimpleTest files
-     */
-    require_once(dirname(__FILE__) . '/options.php');
-    /**#@-*/
-   
-    /**
-     *    HTML or XML tag.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleTag {
-        var $_name;
-        var $_attributes;
-        var $_content;
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param string $name        Tag name.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleTag($name, $attributes) {
-            $this->_name = $name;
-            $this->_attributes = $this->_keysToLowerCase($attributes);
-            $this->_content = '';
-        }
-        
-        /**
-         *    Make the keys lower case for case insensitive look-ups.
-         *    @param hash $map   Hash to convert.
-         *    @return hash       Unchanged values, but keys lower case.
-         *    @access private
-         */
-        function _keysToLowerCase($map) {
-            $lower = array();
-            foreach ($map as $key => $value) {
-                $lower[strtolower($key)] = $value;
-            }
-            return $lower;
-        }
-        
-        /**
-         *    Check to see if the tag can have both start and
-         *    end tags with content in between.
-         *    @return boolean        True if content allowed.
-         *    @access public
-         */
-        function expectEndTag() {
-            return true;
-        }
-        
-        /**
-         *    Appends string content to the current content.
-         *    @param string $content        Additional text.
-         *    @access public
-         */
-        function addContent($content) {
-            $this->_content .= (string)$content;
-        }
-        
-        /**
-         *    Adds an enclosed tag to the content.
-         *    @param SimpleTag $tag    New tag.
-         *    @access public
-         */
-        function addTag(&$tag) {
-        }
-        
-        /**
-         *    Accessor for tag name.
-         *    @return string       Name of tag.
-         *    @access public
-         */
-        function getTagName() {
-            return $this->_name;
-        }
-        
-        /**
-         *    List oflegal child elements.
-         *    @return array        List of element names.
-         *    @access public
-         */
-        function getChildElements() {
-            return array();
-        }
-        
-        /**
-         *    Accessor for an attribute.
-         *    @param string $label    Attribute name.
-         *    @return string          Attribute value.
-         *    @access public
-         */
-        function getAttribute($label) {
-            $label = strtolower($label);
-            if (! isset($this->_attributes[$label])) {
-                return false;
-            }
-            if ($this->_attributes[$label] === '') {
-                return true;
-            }
-            return (string)$this->_attributes[$label];
-        }
-        
-        /**
-         *    Sets an attribute.
-         *    @param string $label    Attribute name.
-         *    @return string $value   New attribute value.
-         *    @access protected
-         */
-        function _setAttribute($label, $value) {
-            $this->_attributes[strtolower($label)] = $value;
-        }
-        
-        /**
-         *    Accessor for the whole content so far.
-         *    @return string       Content as big string.
-         *    @access public
-         */
-        function getContent() {
-            return $this->_content;
-        }
-    }
-    
-    /**
-     *    Page title.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleTitleTag extends SimpleTag {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleTitleTag($attributes) {
-            $this->SimpleTag('title', $attributes);
-        }
-    }
-    
-    /**
-     *    Link.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleAnchorTag extends SimpleTag {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleAnchorTag($attributes) {
-            $this->SimpleTag('a', $attributes);
-        }
-        
-        /**
-         *    Accessor for URL as string.
-         *    @return string    Coerced as string.
-         *    @access public
-         */
-        function getHref() {
-            $url = $this->getAttribute('href');
-            if (is_bool($url)) {
-                $url = '';
-            }
-            return $url;
-        }
-    }
-    
-    /**
-     *    Form element.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleWidget extends SimpleTag {
-        var $_value;
-        var $_is_set;
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param string $name        Tag name.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleWidget($name, $attributes) {
-            $this->SimpleTag($name, $attributes);
-            $this->_value = false;
-            $this->_is_set = false;
-        }
-        
-        /**
-         *    Accessor for name submitted as the key in
-         *    GET/POST variables hash.
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getName() {
-            return $this->getAttribute('name');
-        }
-        
-        /**
-         *    Accessor for default value parsed with the tag.
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getDefault() {
-            $default = $this->getAttribute('value');
-            if ($default === true) {
-                $default = '';
-            }
-            if ($default === false) {
-                $default = '';
-            }
-            return $default;
-        }
-        
-        /**
-         *    Accessor for currently set value or default if
-         *    none.
-         *    @return string      Value set by form or default
-         *                        if none.
-         *    @access public
-         */
-        function getValue() {
-            if (! $this->_is_set) {
-                return $this->getDefault();
-            }
-            return $this->_value;
-        }
-        
-        /**
-         *    Sets the current form element value.
-         *    @param string $value       New value.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            $this->_value = $value;
-            $this->_is_set = true;
-            return true;
-        }
-        
-        /**
-         *    Resets the form element value back to the
-         *    default.
-         *    @access public
-         */
-        function resetValue() {
-            $this->_is_set = false;
-        }
-    }
-    
-    /**
-     *    Text, password and hidden field.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleTextTag extends SimpleWidget {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleTextTag($attributes) {
-            $this->SimpleWidget('input', $attributes);
-            if ($this->getAttribute('value') === false) {
-                $this->_setAttribute('value', '');
-            }
-        }
-        
-        /**
-         *    Tag contains no content.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-        
-        /**
-         *    Sets the current form element value. Cannot
-         *    change the value of a hidden field.
-         *    @param string $value       New value.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            if ($this->getAttribute('type') == 'hidden') {
-                return false;
-            }
-            return parent::setValue($value);
-        }
-    }
-    
-    /**
-     *    Submit button as input tag.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleSubmitTag extends SimpleWidget {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleSubmitTag($attributes) {
-            $this->SimpleWidget('input', $attributes);
-            if ($this->getAttribute('name') === false) {
-                $this->_setAttribute('name', 'submit');
-            }
-            if ($this->getAttribute('value') === false) {
-                $this->_setAttribute('value', 'Submit');
-            }
-        }
-        
-        /**
-         *    Tag contains no end element.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-        
-        /**
-         *    Disables the setting of the button value.
-         *    @param string $value       Ignored.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            return false;
-        }
-        
-        /**
-         *    Value of browser visible text.
-         *    @return string        Visible label.
-         *    @access public
-         */
-        function getLabel() {
-            return $this->getValue();
-        }
-        
-        /**
-         *    Gets the values submitted as a form.
-         *    @return array    Hash of name and values.
-         *    @access public
-         */
-        function getSubmitValues() {
-            return array($this->getName() => $this->getValue());
-        }
-    }
-      
-    /**
-     *    Image button as input tag.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleImageSubmitTag extends SimpleWidget {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleImageSubmitTag($attributes) {
-            $this->SimpleWidget('input', $attributes);
-        }
-        
-        /**
-         *    Tag contains no end element.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-        
-        /**
-         *    Disables the setting of the button value.
-         *    @param string $value       Ignored.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            return false;
-        }
-        
-        /**
-         *    Value of browser visible text.
-         *    @return string        Visible label.
-         *    @access public
-         */
-        function getLabel() {
-            if ($this->getAttribute('title')) {
-                return $this->getAttribute('title');
-            }
-            return $this->getAttribute('alt');
-        }
-        
-        /**
-         *    Gets the values submitted as a form.
-         *    @return array    Hash of name and values.
-         *    @access public
-         */
-        function getSubmitValues($x, $y) {
-            return array(
-                    $this->getName() . '.x' => $x,
-                    $this->getName() . '.y' => $y);
-        }
-    }
-      
-    /**
-     *    Submit button as button tag.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleButtonTag extends SimpleWidget {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    Defaults are very browser dependent.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleButtonTag($attributes) {
-            $this->SimpleWidget('button', $attributes);
-        }
-        
-        /**
-         *    Check to see if the tag can have both start and
-         *    end tags with content in between.
-         *    @return boolean        True if content allowed.
-         *    @access public
-         */
-        function expectEndTag() {
-            return true;
-        }
-        
-        /**
-         *    Disables the setting of the button value.
-         *    @param string $value       Ignored.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            return false;
-        }
-        
-        /**
-         *    Value of browser visible text.
-         *    @return string        Visible label.
-         *    @access public
-         */
-        function getLabel() {
-            return $this->getContent();
-        }
-        
-        /**
-         *    Gets the values submitted as a form. Gone
-         *    for the Mozilla defaults values.
-         *    @return array    Hash of name and values.
-         *    @access public
-         */
-        function getSubmitValues() {
-            if ($this->getAttribute('name') === false) {
-                return array();
-            }
-            if ($this->getAttribute('value') === false) {
-                return array($this->getName() => '');
-            }
-            return array($this->getName() => $this->getValue());
-        }
-    }
-  
-    /**
-     *    Content tag for text area.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleTextAreaTag extends SimpleWidget {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleTextAreaTag($attributes) {
-            $this->SimpleWidget('textarea', $attributes);
-        }
-        
-        /**
-         *    Accessor for starting value.
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getDefault() {
-            if ($this->_wrapIsEnabled()) {
-                return wordwrap(
-                        $this->getContent(),
-                        (integer)$this->getAttribute('cols'),
-                        "\n");
-            }
-            return $this->getContent();
-        }
-        
-        /**
-         *    Applies word wrapping if needed.
-         *    @param string $value      New value.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            if ($this->_wrapIsEnabled()) {
-                $value = wordwrap(
-                        $value,
-                        (integer)$this->getAttribute('cols'),
-                        "\n");
-            }
-            return parent::setValue($value);
-        }
-        
-        /**
-         *    Test to see if text should be wrapped.
-         *    @return boolean        True if wrapping on.
-         *    @access private
-         */
-        function _wrapIsEnabled() {
-            if ($this->getAttribute('cols')) {
-                $wrap = $this->getAttribute('wrap');
-                if (($wrap == 'physical') || ($wrap == 'hard')) {
-                    return true;
-                }
-            }
-            return false;
-        }
-    }
-    
-    /**
-     *    Checkbox widget.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleCheckboxTag extends SimpleWidget {
-        
-        /**
-         *    Starts with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleCheckboxTag($attributes) {
-            $this->SimpleWidget('input', $attributes);
-            if ($this->getAttribute('value') === false) {
-                $this->_setAttribute('value', 'on');
-            }
-        }
-        
-        /**
-         *    Tag contains no content.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-        
-        /**
-         *    The only allowed value in the one in the
-         *    "value" attribute. The default for this
-         *    attribute is "on".
-         *    @param string $value      New value.
-         *    @return boolean           True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            if ($value === false) {
-                return parent::setValue($value);
-            }
-            if ($value != $this->getAttribute('value')) {
-                return false;
-            }
-            return parent::setValue($value);
-        }
-        
-        /**
-         *    Accessor for starting value. The default
-         *    value is "on".
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getDefault() {
-            if ($this->getAttribute('checked')) {
-                return $this->getAttribute('value');
-            }
-            return false;
-        }
-    }
-    
-    /**
-     *    Drop down widget.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleSelectionTag extends SimpleWidget {
-        var $_options;
-        var $_choice;
-        
-        /**
-         *    Starts with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleSelectionTag($attributes) {
-            $this->SimpleWidget('select', $attributes);
-            $this->_options = array();
-            $this->_choice = false;
-        }
-        
-        /**
-         *    Adds an option tag to a selection field.
-         *    @param SimpleOptionTag $tag     New option.
-         *    @access public
-         */
-        function addTag(&$tag) {
-            if ($tag->getTagName() == 'option') {
-                $this->_options[] = &$tag;
-            }
-        }
-        
-        /**
-         *    Text within the selection element is ignored.
-         *    @param string $content        Ignored.
-         *    @access public
-         */
-        function addContent($content) {
-        }
-        
-        /**
-         *    Scans options for defaults. If none, then
-         *    the first option is selected.
-         *    @return string        Selected field.
-         *    @access public
-         */
-        function getDefault() {
-            for ($i = 0; $i < count($this->_options); $i++) {
-                if ($this->_options[$i]->getAttribute('selected')) {
-                    return $this->_options[$i]->getDefault();
-                }
-            }
-            if (count($this->_options) > 0) {
-                return $this->_options[0]->getDefault();
-            }
-            return '';
-        }
-        
-        /**
-         *    Can only set allowed values.
-         *    @param string $value       New choice.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            for ($i = 0; $i < count($this->_options); $i++) {
-                if ($this->_options[$i]->getContent() === $value) {
-                    $this->_choice = $i;
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for current selection value.
-         *    @return string      Value attribute or
-         *                        content of opton.
-         *    @access public
-         */
-        function getValue() {
-            if ($this->_choice === false) {
-                return $this->getDefault();
-            }
-            return $this->_options[$this->_choice]->getValue();
-        }
-    }
-    
-    /**
-     *    Drop down widget.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class MultipleSelectionTag extends SimpleWidget {
-        var $_options;
-        var $_values;
-        
-        /**
-         *    Starts with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function MultipleSelectionTag($attributes) {
-            $this->SimpleWidget('select', $attributes);
-            $this->_options = array();
-            $this->_values = false;
-        }
-        
-        /**
-         *    Adds an option tag to a selection field.
-         *    @param SimpleOptionTag $tag     New option.
-         *    @access public
-         */
-        function addTag(&$tag) {
-            if ($tag->getTagName() == 'option') {
-                $this->_options[] = &$tag;
-            }
-        }
-        
-        /**
-         *    Text within the selection element is ignored.
-         *    @param string $content        Ignored.
-         *    @access public
-         */
-        function addContent($content) {
-        }
-        
-        /**
-         *    Scans options for defaults to populate the
-         *    value array().
-         *    @return array        Selected fields.
-         *    @access public
-         */
-        function getDefault() {
-            $default = array();
-            for ($i = 0; $i < count($this->_options); $i++) {
-                if ($this->_options[$i]->getAttribute('selected')) {
-                    $default[] = $this->_options[$i]->getDefault();
-                }
-            }
-            return $default;
-        }
-        
-        /**
-         *    Can only set allowed values.
-         *    @param array $values       New choices.
-         *    @return boolean            True if allowed.
-         *    @access public
-         */
-        function setValue($values) {
-            foreach ($values as $value) {
-                $is_option = false;
-                for ($i = 0; $i < count($this->_options); $i++) {
-                    if ($this->_options[$i]->getContent() == $value) {
-                        $is_option = true;
-                        break;
-                    }
-                }
-                if (! $is_option) {
-                    return false;
-                }
-            }
-            $this->_values = $values;
-            return true;
-        }
-        
-        /**
-         *    Accessor for current selection value.
-         *    @return array      List of currently set options.
-         *    @access public
-         */
-        function getValue() {
-            if ($this->_values === false) {
-                return $this->getDefault();
-            }
-            return $this->_values;
-        }
-    }
-    
-    /**
-     *    Option for selection field.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleOptionTag extends SimpleWidget {
-        
-        /**
-         *    Stashes the attributes.
-         */
-        function SimpleOptionTag($attributes) {
-            $this->SimpleWidget('option', $attributes);
-        }
-        
-        /**
-         *    Does nothing.
-         *    @param string $value      Ignored.
-         *    @return boolean           Not allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            return false;
-        }
-        
-        /**
-         *    Accessor for starting value. Will be set to
-         *    the option label if no value exists.
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getDefault() {
-            if ($this->getAttribute('value') === false) {
-                return $this->getContent();
-            }
-            return $this->getAttribute('value');
-        }
-    }
-    
-    /**
-     *    Radio button.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleRadioButtonTag extends SimpleWidget {
-        
-        /**
-         *    Stashes the attributes.
-         */
-        function SimpleRadioButtonTag($attributes) {
-            $this->SimpleWidget('input', $attributes);
-            if ($this->getAttribute('value') === false) {
-                $this->_setAttribute('value', 'on');
-            }
-        }
-        
-        /**
-         *    Tag contains no content.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-        
-        /**
-         *    The only allowed value in the one in the
-         *    "value" attribute.
-         *    @param string $value      New value.
-         *    @return boolean           True if allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            if ($value === false) {
-                return parent::setValue($value);
-            }
-            if ($value != $this->getAttribute('value')) {
-                return false;
-            }
-            return parent::setValue($value);
-        }
-        
-        /**
-         *    Accessor for starting value.
-         *    @return string        Parsed value.
-         *    @access public
-         */
-        function getDefault() {
-            if ($this->getAttribute('checked')) {
-                return $this->getAttribute('value');
-            }
-            return false;
-        }
-    }
-    
-    /**
-     *    A group of tags with the same name within a form.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleCheckboxGroup {
-        var $_widgets;
-        
-        /**
-         *    Starts empty.
-         *    @access public
-         */
-        function SimpleCheckboxGroup() {
-            $this->_widgets = array();
-        }
-        
-        /**
-         *    Adds a tag to the group.
-         *    @param SimpleWidget $widget
-         *    @access public
-         */
-        function addWidget(&$widget) {
-            $this->_widgets[] = &$widget;
-        }
-        
-        /**
-         *    Accessor for current selected widget or false
-         *    if none.
-         *    @return string/array     Widget values or false if none.
-         *    @access public
-         */
-        function getValue() {
-            $values = array();
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if ($this->_widgets[$i]->getValue()) {
-                    $values[] = $this->_widgets[$i]->getValue();
-                }
-            }
-            return $this->_coerceValues($values);
-        }
-        
-        /**
-         *    Accessor for starting value that is active.
-         *    @return string/array      Widget values or false if none.
-         *    @access public
-         */
-        function getDefault() {
-            $values = array();
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if ($this->_widgets[$i]->getDefault()) {
-                    $values[] = $this->_widgets[$i]->getDefault();
-                }
-            }
-            return $this->_coerceValues($values);
-        }
-        
-        /**
-         *    Accessor for current set values.
-         *    @param string/array/boolean $values   Either a single string, a
-         *                                          hash or false for nothing set.
-         *    @return boolean                       True if all values can be set.
-         *    @access public
-         */
-        function setValue($values) {
-            $values = $this->_makeArray($values);
-            if (! $this->_valuesArePossible($values)) {
-                return false;
-            }
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                $possible = $this->_widgets[$i]->getAttribute('value');
-                if (in_array($this->_widgets[$i]->getAttribute('value'), $values)) {
-                    $this->_widgets[$i]->setValue($possible);
-                } else {
-                    $this->_widgets[$i]->setValue(false);
-                }
-            }
-            return true;
-        }
-        
-        /**
-         *    Tests to see if a possible value set is legal.
-         *    @param string/array/boolean $values   Either a single string, a
-         *                                          hash or false for nothing set.
-         *    @return boolean                       False if trying to set a
-         *                                          missing value.
-         *    @access private
-         */
-        function _valuesArePossible($values) {
-            $matches = array();
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                $possible = $this->_widgets[$i]->getAttribute('value');
-                if (in_array($possible, $values)) {
-                    $matches[] = $possible;
-                }
-            }
-            return ($values == $matches);
-        }
-        
-        /**
-         *    Converts the output to an appropriate format. This means
-         *    that no values is false, a single value is just that
-         *    value and only two or more are contained in an array.
-         *    @param array $values           List of values of widgets.
-         *    @return string/array/boolean   Expected format for a tag.
-         *    @access private
-         */
-        function _coerceValues($values) {
-            if (count($values) == 0) {
-                return false;
-            } elseif (count($values) == 1) {
-                return $values[0];
-            } else {
-                return $values;
-            }
-        }
-        
-        /**
-         *    Converts false or string into array. The opposite of
-         *    the coercian method.
-         *    @param string/array/boolean $value  A single item is converted
-         *                                        to a one item list. False
-         *                                        gives an empty list.
-         *    @return array                       List of values, possibly empty.
-         *    @access private
-         */
-        function _makeArray($value) {
-            if ($value === false) {
-                return array();
-            }
-            if (is_string($value)) {
-                return array($value);
-            }
-            return $value;
-        }
-    }
-
-    /**
-     *    A group of tags with the same name within a form.
-     *    Used for radio buttons.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleRadioGroup {
-        var $_widgets;
-        
-        /**
-         *    Starts empty.
-         *    @access public
-         */
-        function SimpleRadioGroup() {
-            $this->_widgets = array();
-        }
-        
-        /**
-         *    Adds a tag to the group.
-         *    @param SimpleWidget $widget
-         *    @access public
-         */
-        function addWidget(&$widget) {
-            $this->_widgets[] = &$widget;
-        }
-        
-        /**
-         *    Each tag is tried in turn until one is
-         *    successfully set. The others will be
-         *    unchecked if successful.
-         *    @param string $value      New value.
-         *    @return boolean           True if any allowed.
-         *    @access public
-         */
-        function setValue($value) {
-            if (! $this->_valueIsPossible($value)) {
-                return false;
-            }
-            $index = false;
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if (! $this->_widgets[$i]->setValue($value)) {
-                    $this->_widgets[$i]->setValue(false);
-                }
-            }
-            return true;
-        }
-        
-        /**
-         *    Tests to see if a value is allowed.
-         *    @param string    Attempted value.
-         *    @return boolean  True if a valid value.
-         *    @access private
-         */
-        function _valueIsPossible($value) {
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if ($this->_widgets[$i]->getAttribute('value') == $value) {
-                    return true;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for current selected widget or false
-         *    if none.
-         *    @return string/boolean   Value attribute or
-         *                             content of opton.
-         *    @access public
-         */
-        function getValue() {
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if ($this->_widgets[$i]->getValue()) {
-                    return $this->_widgets[$i]->getValue();
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Accessor for starting value that is active.
-         *    @return string/boolean      Value of first checked
-         *                                widget or false if none.
-         *    @access public
-         */
-        function getDefault() {
-            for ($i = 0; $i < count($this->_widgets); $i++) {
-                if ($this->_widgets[$i]->getDefault()) {
-                    return $this->_widgets[$i]->getDefault();
-                }
-            }
-            return false;
-        }
-    }
-    
-    /**
-     *    Tag to aid parsing the form.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleFormTag extends SimpleTag {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleFormTag($attributes) {
-            $this->SimpleTag('form', $attributes);
-        }
-    }
-    
-    /**
-     *    Tag to aid parsing the frames in a page.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleFrameTag extends SimpleTag {
-        
-        /**
-         *    Starts with a named tag with attributes only.
-         *    @param hash $attributes    Attribute names and
-         *                               string values.
-         */
-        function SimpleFrameTag($attributes) {
-            $this->SimpleTag('frame', $attributes);
-        }
-        
-        /**
-         *    Tag contains no content.
-         *    @return boolean        False.
-         *    @access public
-         */
-        function expectEndTag() {
-            return false;
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/unit_tester.php b/htdocs/TESTS/simpletest/unit_tester.php
deleted file mode 100644 (file)
index e918d00..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: unit_tester.php,v 1.21 2004/08/25 21:00:02 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/simple_test.php');
-    require_once(dirname(__FILE__) . '/errors.php');
-    require_once(dirname(__FILE__) . '/dumper.php');
-    /**#@-*/
-    
-    /**
-     *    Standard unit test class for day to day testing
-     *    of PHP code XP style. Adds some useful standard
-     *    assertions.
-        *        @package      SimpleTest
-        *        @subpackage   UnitTester
-     */
-    class UnitTestCase extends SimpleTestCase {
-        
-        /**
-         *    Creates an empty test case. Should be subclassed
-         *    with test methods for a functional test case.
-         *    @param string $label     Name of test case. Will use
-         *                             the class name if none specified.
-         *    @access public
-         */
-        function UnitTestCase($label = false) {
-            if (! $label) {
-                $label = get_class($this);
-            }
-            $this->SimpleTestCase($label);
-        }
-        
-        /**
-         *    Will be true if the value is null.
-         *    @param null $value       Supposedly null value.
-         *    @param string $message   Message to display.
-         *    @return boolean                        True on pass
-         *    @access public
-         */
-        function assertNull($value, $message = "%s") {
-            $dumper = &new SimpleDumper();
-            $message = sprintf(
-                    $message,
-                    "[" . $dumper->describeValue($value) . "] should be null");
-            return $this->assertTrue(! isset($value), $message);
-        }
-        
-        /**
-         *    Will be true if the value is set.
-         *    @param mixed $value           Supposedly set value.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass.
-         *    @access public
-         */
-        function assertNotNull($value, $message = "%s") {
-            $dumper = &new SimpleDumper();
-            $message = sprintf(
-                    $message,
-                    "[" . $dumper->describeValue($value) . "] should not be null");
-            return $this->assertTrue(isset($value), $message);
-        }
-        
-        /**
-         *    Type and class test. Will pass if class
-         *    matches the type name or is a subclass or
-         *    if not an object, but the type is correct.
-         *    @param mixed $object         Object to test.
-         *    @param string $type          Type name as string.
-         *    @param string $message       Message to display.
-         *    @return boolean              True on pass.
-         *    @access public
-         */
-        function assertIsA($object, $type, $message = "%s") {
-            return $this->assertExpectation(
-                    new IsAExpectation($type),
-                    $object,
-                    $message);
-        }
-        
-        /**
-         *    Type and class mismatch test. Will pass if class
-         *    name or underling type does not match the one
-         *    specified.
-         *    @param mixed $object         Object to test.
-         *    @param string $type          Type name as string.
-         *    @param string $message       Message to display.
-         *    @return boolean              True on pass.
-         *    @access public
-         */
-        function assertNotA($object, $type, $message = "%s") {
-            return $this->assertExpectation(
-                    new NotAExpectation($type),
-                    $object,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the two parameters have
-         *    the same value only. Otherwise a fail.
-         *    @param mixed $first          Value to compare.
-         *    @param mixed $second         Value to compare.
-         *    @param string $message       Message to display.
-         *    @return boolean              True on pass
-         *    @access public
-         */
-        function assertEqual($first, $second, $message = "%s") {
-            return $this->assertExpectation(
-                    new EqualExpectation($first),
-                    $second,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the two parameters have
-         *    a different value. Otherwise a fail.
-         *    @param mixed $first           Value to compare.
-         *    @param mixed $second          Value to compare.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass
-         *    @access public
-         */
-        function assertNotEqual($first, $second, $message = "%s") {
-            return $this->assertExpectation(
-                    new NotEqualExpectation($first),
-                    $second,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the two parameters have
-         *    the same value and same type. Otherwise a fail.
-         *    @param mixed $first           Value to compare.
-         *    @param mixed $second          Value to compare.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass
-         *    @access public
-         */
-        function assertIdentical($first, $second, $message = "%s") {
-            return $this->assertExpectation(
-                    new IdenticalExpectation($first),
-                    $second,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the two parameters have
-         *    the different value or different type.
-         *    @param mixed $first           Value to compare.
-         *    @param mixed $second          Value to compare.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass
-         *    @access public
-         */
-        function assertNotIdentical($first, $second, $message = "%s") {
-            return $this->assertExpectation(
-                    new NotIdenticalExpectation($first),
-                    $second,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if both parameters refer
-         *    to the same object. Fail otherwise.
-         *    @param mixed $first           Object reference to check.
-         *    @param mixed $second          Hopefully the same object.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass
-         *    @access public
-         */
-        function assertReference(&$first, &$second, $message = "%s") {
-            $dumper = &new SimpleDumper();
-            $message = sprintf(
-                    $message,
-                    "[" . $dumper->describeValue($first) .
-                            "] and [" . $dumper->describeValue($second) .
-                            "] should reference the same object");
-            $temp = $first;
-            $first = uniqid("test");
-            $is_ref = ($first === $second);
-            $first = $temp;
-            return $this->assertTrue($is_ref, $message);
-        }
-        
-        /**
-         *    Will trigger a pass if both parameters refer
-         *    to different objects. Fail otherwise.
-         *    @param mixed $first           Object reference to check.
-         *    @param mixed $second          Hopefully not the same object.
-         *    @param string $message        Message to display.
-         *    @return boolean               True on pass
-         *    @access public
-         */
-        function assertCopy(&$first, &$second, $message = "%s") {
-            $dumper = &new SimpleDumper();
-            $message = sprintf(
-                    $message,
-                    "[" . $dumper->describeValue($first) .
-                            "] and [" . $dumper->describeValue($second) .
-                            "] should not be the same object");
-            $temp = $first;
-            $first = uniqid("test");
-            $is_ref = ($first === $second);
-            $first = $temp;
-            return $this->assertFalse($is_ref, $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the Perl regex pattern
-         *    is found in the subject. Fail otherwise.
-         *    @param string $pattern    Perl regex to look for including
-         *                              the regex delimiters.
-         *    @param string $subject    String to search in.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertWantedPattern($pattern, $subject, $message = "%s") {
-            return $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    $subject,
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the perl regex pattern
-         *    is not present in subject. Fail if found.
-         *    @param string $pattern    Perl regex to look for including
-         *                              the regex delimiters.
-         *    @param string $subject    String to search in.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertNoUnwantedPattern($pattern, $subject, $message = "%s") {
-            return $this->assertExpectation(
-                    new UnwantedPatternExpectation($pattern),
-                    $subject,
-                    $message);
-        }
-        
-        /**
-         *    Confirms that no errors have occoured so
-         *    far in the test method.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertNoErrors($message = "%s") {
-            $queue = &SimpleErrorQueue::instance();
-            return $this->assertTrue(
-                    $queue->isEmpty(),
-                    sprintf($message, "Should be no errors"));
-        }
-        
-        /**
-         *    Confirms that an error has occoured and
-         *    optionally that the error text matches exactly.
-         *    @param string $expected   Expected error text or
-         *                              false for no check.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertError($expected = false, $message = "%s") {
-            $queue = &SimpleErrorQueue::instance();
-            if ($queue->isEmpty()) {
-                $this->fail(sprintf($message, "Expected error not found"));
-                return;
-            }
-            list($severity, $content, $file, $line, $globals) = $queue->extract();
-            $severity = SimpleErrorQueue::getSeverityAsString($severity);
-            return $this->assertTrue(
-                    ! $expected || ($expected == $content),
-                    "Expected [$expected] in PHP error [$content] severity [$severity] in [$file] line [$line]");
-        }
-        
-        /**
-         *    Confirms that an error has occoured and
-         *    that the error text matches a Perl regular
-         *    expression.
-         *    @param string $expected   Perl regular expresion to
-         *                              match against.
-         *    @param string $message    Message to display.
-         *    @return boolean           True on pass
-         *    @access public
-         */
-        function assertErrorPattern($pattern, $message = "%s") {
-            $queue = &SimpleErrorQueue::instance();
-            if ($queue->isEmpty()) {
-                $this->fail(sprintf($message, "Expected error not found"));
-                return;
-            }
-            list($severity, $content, $file, $line, $globals) = $queue->extract();
-            $severity = SimpleErrorQueue::getSeverityAsString($severity);
-            return $this->assertTrue(
-                    (boolean)preg_match($pattern, $content),
-                    "Expected pattern match [$pattern] in PHP error [$content] severity [$severity] in [$file] line [$line]");
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/url.php b/htdocs/TESTS/simpletest/url.php
deleted file mode 100644 (file)
index e9f4a15..0000000
+++ /dev/null
@@ -1,621 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: url.php,v 1.13 2004/08/15 21:53:08 lastcraft Exp $
-     */
-
-    /**
-     *    Bundle of GET/POST parameters. Can include
-     *    repeated parameters.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleQueryString {
-        var $_request;
-        
-        /**
-         *    Starts empty.
-         *    @param array $query/SimpleQueryString  Hash of parameters.
-         *                                           Multiple values are
-         *                                           as lists on a single key.
-         *    @access public
-         */
-        function SimpleQueryString($query = false) {
-            if (! $query) {
-                $query = array();
-            }
-            $this->_request = array();
-            $this->merge($query);
-        }
-        
-        /**
-         *    Adds a parameter to the query.
-         *    @param string $key            Key to add value to.
-         *    @param string/array $value    New data.
-         *    @access public
-         */
-        function add($key, $value) {
-            if (! isset($this->_request[$key])) {
-                $this->_request[$key] = array();
-            }
-            if (is_array($value)) {
-                foreach ($value as $item) {
-                    $this->_request[$key][] = $item;
-                }
-            } else {
-                $this->_request[$key][] = $value;
-            }
-        }
-        
-        /**
-         *    Adds a set of parameters to this query.
-         *    @param array $query/SimpleQueryString  Hash of parameters.
-         *                                           Multiple values are
-         *                                           as lists on a single key.
-         *    @access public
-         */
-        function merge($query) {
-            if (is_object($query)) {
-                foreach ($query->getKeys() as $key) {
-                    $this->add($key, $query->getValue($key));
-                }
-            } else {
-                foreach ($query as $key => $value) {
-                    $this->add($key, $value);
-                }
-            }
-        }
-        
-        /**
-         *    Accessor for single value.
-         *    @return string/array    False if missing, string
-         *                            if present and array if
-         *                            multiple entries.
-         *    @access public
-         */
-        function getValue($key) {
-            if (! isset($this->_request[$key])) {
-                return false;
-            } elseif (count($this->_request[$key]) == 1) {
-                return $this->_request[$key][0];
-            } else {
-                return $this->_request[$key];
-            }
-        }
-        
-        /**
-         *    Accessor for key list.
-         *    @return array        List of keys present.
-         *    @access public
-         */
-        function getKeys() {
-            return array_keys($this->_request);
-        }
-        
-        /**
-         *    Gets all parameters as structured hash. Repeated
-         *    values are list values.
-         *    @return array        Hash of keys and value sets.
-         *    @access public
-         */
-        function getAll() {
-            $values = array();
-            foreach ($this->_request as $key => $value) {
-                $values[$key] = (count($value) == 1 ? $value[0] : $value);
-            }
-            return $values;
-        }
-        
-        /**
-         *    Renders the query string as a URL encoded
-         *    request part.
-         *    @return string        Part of URL.
-         *    @access public
-         */
-        function asString() {
-            $statements = array();
-            foreach ($this->_request as $key => $values) {
-                foreach ($values as $value) {
-                    $statements[] = "$key=" . urlencode($value);
-                }
-            }
-            return implode('&', $statements);
-        }
-    }
-
-    /**
-     *    URL parser to replace parse_url() PHP function which
-     *    got broken in PHP 4.3.0. Adds some browser specific
-     *    functionality such as expandomatic expansion.
-     *    Guesses a bit trying to separate the host from
-     *    the path.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleUrl {
-        var $_scheme;
-        var $_username;
-        var $_password;
-        var $_host;
-        var $_port;
-        var $_path;
-        var $_request;
-        var $_fragment;
-        var $_x;
-        var $_y;
-        var $_target;
-        
-        /**
-         *    Constructor. Parses URL into sections.
-         *    @param string $url        Incoming URL.
-         *    @access public
-         */
-        function SimpleUrl($url) {
-            list($this->_x, $this->_y) = $this->_chompCoordinates($url);
-            $this->_scheme = $this->_chompScheme($url);
-            list($this->_username, $this->_password) = $this->_chompLogin($url);
-            $this->_host = $this->_chompHost($url);
-            $this->_port = false;
-            if (preg_match('/(.*?):(.*)/', $this->_host, $host_parts)) {
-                $this->_host = $host_parts[1];
-                $this->_port = (integer)$host_parts[2];
-            }
-            $this->_path = $this->_chompPath($url);
-            $this->_request = $this->_parseRequest($this->_chompRequest($url));
-            $this->_fragment = (strncmp($url, "#", 1) == 0 ? substr($url, 1) : false);
-            $this->_target = false;
-        }
-        
-        /**
-         *    Extracts the X, Y coordinate pair from an image map.
-         *    @param string $url   URL so far. The coordinates will be
-         *                         removed.
-         *    @return array        X, Y as a pair of integers.
-         *    @access private
-         */
-        function _chompCoordinates(&$url) {
-            if (preg_match('/(.*)\?(\d+),(\d+)$/', $url, $matches)) {
-                $url = $matches[1];
-                return array((integer)$matches[2], (integer)$matches[3]);
-            }
-            return array(false, false);
-        }
-        
-        /**
-         *    Extracts the scheme part of an incoming URL.
-         *    @param string $url   URL so far. The scheme will be
-         *                         removed.
-         *    @return string       Scheme part or false.
-         *    @access private
-         */
-        function _chompScheme(&$url) {
-            if (preg_match('/(.*?):(\/\/)(.*)/', $url, $matches)) {
-                $url = $matches[2] . $matches[3];
-                return $matches[1];
-            }
-            return false;
-        }
-        
-        /**
-         *    Extracts the username and password from the
-         *    incoming URL. The // prefix will be reattached
-         *    to the URL after the doublet is extracted.
-         *    @param string $url    URL so far. The username and
-         *                          password are removed.
-         *    @return array         Two item list of username and
-         *                          password. Will urldecode() them.
-         *    @access private
-         */
-        function _chompLogin(&$url) {
-            $prefix = '';
-            if (preg_match('/(\/\/)(.*)/', $url, $matches)) {
-                $prefix = $matches[1];
-                $url = $matches[2];
-            }
-            if (preg_match('/(.*?)@(.*)/', $url, $matches)) {
-                $url = $prefix . $matches[2];
-                $parts = explode(":", $matches[1]);
-                return array(
-                        urldecode($parts[0]),
-                        isset($parts[1]) ? urldecode($parts[1]) : false);
-            }
-            $url = $prefix . $url;
-            return array(false, false);
-        }
-        
-        /**
-         *    Extracts the host part of an incoming URL.
-         *    Includes the port number part. Will extract
-         *    the host if it starts with // or it has
-         *    a top level domain or it has at least two
-         *    dots.
-         *    @param string $url    URL so far. The host will be
-         *                          removed.
-         *    @return string        Host part guess or false.
-         *    @access private
-         */
-        function _chompHost(&$url) {
-            if (preg_match('/(\/\/)(.*?)(\/.*|\?.*|#.*|$)/', $url, $matches)) {
-                $url = $matches[3];
-                return $matches[2];
-            }
-            if (preg_match('/(.*?)(\.\.\/|\.\/|\/|\?|#|$)(.*)/', $url, $matches)) {
-                if (preg_match('/[a-z0-9\-]+\.(com|edu|net|org|gov|mil|int)/i', $matches[1])) {
-                    $url = $matches[2] . $matches[3];
-                    return $matches[1];
-                } elseif (preg_match('/[a-z0-9\-]+\.[a-z0-9\-]+\.[a-z0-9\-]+/i', $matches[1])) {
-                    $url = $matches[2] . $matches[3];
-                    return $matches[1];
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Extracts the path information from the incoming
-         *    URL. Strips this path from the URL.
-         *    @param string $url     URL so far. The host will be
-         *                           removed.
-         *    @return string         Path part or '/'.
-         *    @access private
-         */
-        function _chompPath(&$url) {
-            if (preg_match('/(.*?)(\?|#|$)(.*)/', $url, $matches)) {
-                $url = $matches[2] . $matches[3];
-                return ($matches[1] ? $matches[1] : '');
-            }
-            return '';
-        }
-        
-        /**
-         *    Strips off the request data.
-         *    @param string $url  URL so far. The request will be
-         *                        removed.
-         *    @return string      Raw request part.
-         *    @access private
-         */
-        function _chompRequest(&$url) {
-            if (preg_match('/\?(.*?)(#|$)(.*)/', $url, $matches)) {
-                $url = $matches[2] . $matches[3];
-                return $matches[1];
-            }
-            return '';
-        }
-         
-        /**
-         *    Breaks the request down into an object.
-         *    @param string $raw           Raw request.
-         *    @return SimpleQueryString    Parsed data.
-         *    @access private
-         */
-        function _parseRequest($raw) {
-            $request = new SimpleQueryString();
-            foreach (explode("&", $raw) as $pair) {
-                if (preg_match('/(.*?)=(.*)/', $pair, $matches)) {
-                    $request->add($matches[1], urldecode($matches[2]));
-                } elseif ($pair) {
-                    $request->add($pair, '');
-                }
-            }
-            return $request;
-        }
-        
-        /**
-         *    Accessor for protocol part.
-         *    @param string $default    Value to use if not present.
-         *    @return string            Scheme name, e.g "http".
-         *    @access public
-         */
-        function getScheme($default = false) {
-            return $this->_scheme ? $this->_scheme : $default;
-        }
-        
-        /**
-         *    Accessor for user name.
-         *    @return string    Username preceding host.
-         *    @access public
-         */
-        function getUsername() {
-            return $this->_username;
-        }
-        
-        /**
-         *    Accessor for password.
-         *    @return string    Password preceding host.
-         *    @access public
-         */
-        function getPassword() {
-            return $this->_password;
-        }
-        
-        /**
-         *    Accessor for hostname and port.
-         *    @param string $default    Value to use if not present.
-         *    @return string            Hostname only.
-         *    @access public
-         */
-        function getHost($default = false) {
-            return $this->_host ? $this->_host : $default;
-        }
-        
-        /**
-         *    Accessor for top level domain.
-         *    @return string       Last part of host.
-         *    @access public
-         */
-        function getTld() {
-            $path_parts = pathinfo($this->getHost());
-            return (isset($path_parts['extension']) ? $path_parts['extension'] : false);
-        }
-        
-        /**
-         *    Accessor for port number.
-         *    @return integer    TCP/IP port number.
-         *    @access public
-         */
-        function getPort() {
-            return $this->_port;
-        }        
-                
-       /**
-         *    Accessor for path.
-         *    @return string    Full path including leading slash if implied.
-         *    @access public
-         */
-        function getPath() {
-            if (! $this->_path && $this->_host) {
-                return '/';
-            }
-            return $this->_path;
-        }
-        
-        /**
-         *    Accessor for page if any. This may be a
-         *    directory name if ambiguious.
-         *    @return            Page name.
-         *    @access public
-         */
-        function getPage() {
-            if (! preg_match('/([^\/]*?)$/', $this->getPath(), $matches)) {
-                return false;
-            }
-            return $matches[1];
-        }
-        
-        /**
-         *    Gets the path to the page.
-         *    @return string       Path less the page.
-         *    @access public
-         */
-        function getBasePath() {
-            if (! preg_match('/(.*\/)[^\/]*?$/', $this->getPath(), $matches)) {
-                return false;
-            }
-            return $matches[1];
-        }
-        
-        /**
-         *    Accessor for fragment at end of URL after the "#".
-         *    @return string    Part after "#".
-         *    @access public
-         */
-        function getFragment() {
-            return $this->_fragment;
-        }
-        
-        /**
-         *    Accessor for horizontal image coordinate.
-         *    @return integer        X value.
-         *    @access public
-         */
-        function getX() {
-            return $this->_x;
-        }
-         
-        /**
-         *    Accessor for vertical image coordinate.
-         *    @return integer        Y value.
-         *    @access public
-         */
-        function getY() {
-            return $this->_y;
-        }
-       
-        /**
-         *    Accessor for current request parameters
-         *    in URL string form
-         *    @return string   Form is string "?a=1&b=2", etc.
-         *    @access public
-         */
-        function getEncodedRequest() {
-            $query = $this->_request;
-            $encoded = $query->asString();
-            if ($encoded) {
-                return "?$encoded";
-            }
-            return '';
-        }
-        
-        /**
-         *    Encodes parameters as HTTP request parameters.
-         *    @param hash $parameters    Request as hash.
-         *    @return string             Encoded request.
-         *    @access public
-         *    @static
-         */
-        function encodeRequest($parameters) {
-            if (! $parameters) {
-                return '';
-            }
-            $query = &new SimpleQueryString();
-            foreach ($parameters as $key => $value) {
-                $query->add($key, $value);
-            }
-            return $query->asString();
-        }
-        
-        /**
-         *    Accessor for current request parameters
-         *    as an object.
-         *    @return array   Hash of name and value pairs. The
-         *                    values will be lists for repeated items.
-         *    @access public
-         */
-        function getRequest() {
-            return $this->_request->getAll();
-        }
-        
-        /**
-         *    Adds an additional parameter to the request.
-         *    @param string $key            Name of parameter.
-         *    @param string $value          Value as string.
-         *    @access public
-         */
-        function addRequestParameter($key, $value) {
-            $this->_request->add($key, $value);
-        }
-        
-        /**
-         *    Adds additional parameters to the request.
-         *    @param hash $parameters   Hash of additional parameters.
-         *    @access public
-         */
-        function addRequestParameters($parameters) {
-            if ($parameters) {
-                $this->_request->merge($parameters);
-            }
-        }
-        
-        /**
-         *    Clears down all parameters.
-         *    @access public
-         */
-        function clearRequest() {
-            $this->_request = &new SimpleQueryString();
-        }
-        
-        /**
-         *    Sets image coordinates. Set to flase to clear
-         *    them.
-         *    @param integer $x    Horizontal position.
-         *    @param integer $y    Vertical position.
-         *    @access public
-         */
-        function setCoordinates($x = false, $y = false) {
-            if (($x === false) || ($y === false)) {
-                $this->_x = $this->_y = false;
-                return;
-            }
-            $this->_x = (integer)$x;
-            $this->_y = (integer)$y;
-        }
-        
-        /**
-         *    Gets the frame target if present. Although
-         *    not strictly part of the URL specification it
-         *    acts as similarily to the browser.
-         *    @return boolean/string    Frame name or false if none.
-         *    @access public
-         */
-        function getTarget() {
-            return $this->_target;
-        }
-        
-        /**
-         *    Attaches a frame target.
-         *    @param string $frame        Name of frame.
-         *    @access public
-         */
-        function setTarget($frame) {
-            $this->_target = $frame;
-        }
-        
-        /**
-         *    Renders the URL back into a string.
-         *    @return string        URL in canonical form.
-         *    @access public
-         */
-        function asString() {
-            $scheme = $identity = $host = $path = $encoded = $fragment = '';
-            if ($this->_username && $this->_password) {
-                $identity = $this->_username . ':' . $this->_password . '@';
-            }
-            if ($this->getHost()) {
-                $scheme = $this->getScheme() ? $this->getScheme() : 'http';
-                $host = $this->getHost();
-            }
-            if (substr($this->_path, 0, 1) == '/') {
-                $path = $this->normalisePath($this->_path);
-            }
-            $encoded = $this->getEncodedRequest();
-            $fragment = $this->getFragment() ? '#'. $this->getFragment() : '';
-            $coords = ($this->_x !== false) ? '?' . $this->_x . ',' . $this->_y : '';
-            return "$scheme://$identity$host$path$encoded$fragment$coords";
-        }
-        
-        /**
-         *    Replaces unknown sections to turn a relative
-         *    URL into an absolute one. The base URL can
-         *    be either a string or a SimpleUrl object.
-         *    @param string/SimpleUrl $base       Base URL.
-         *    @access public
-         */
-        function makeAbsolute($base) {
-            if (! is_object($base)) {
-                $base = new SimpleUrl($base);
-            }
-            $scheme = $this->getScheme() ? $this->getScheme() : $base->getScheme();
-            $host = $this->getHost();
-            $port = $this->getPort() ? ':' . $this->getPort() : '';
-            $path = $this->normalisePath($this->_path);
-            if (! $host) {
-                $host = $base->getHost();
-                $port = $base->getPort() ? ':' . $base->getPort() : '';
-                if ($this->_isRelativePath($this->_path)) {
-                    $path = $this->normalisePath($base->getBasePath() . $this->_path);
-                }
-            }
-            $identity = $this->_getIdentity() ? $this->_getIdentity() . '@' : '';
-            $encoded = $this->getEncodedRequest();
-            $fragment = $this->getFragment() ? '#'. $this->getFragment() : '';
-            $coords = ($this->_x !== false) ? '?' . $this->_x . ',' . $this->_y : '';
-            return new SimpleUrl("$scheme://$identity$host$port$path$encoded$fragment$coords");
-        }
-        
-        /**
-         *    Simple test to see if a path part is relative.
-         *    @param string $path        Path to test.
-         *    @return boolean            True if starts with a "/".
-         *    @access private
-         */
-        function _isRelativePath($path) {
-            return (substr($path, 0, 1) != '/');
-        }
-        
-        /**
-         *    Extracts the username and password for use in rendering
-         *    a URL.
-         *    @return string/boolean    Form of username:password@ or false.
-         *    @access private
-         */
-        function _getIdentity() {
-            if ($this->_username && $this->_password) {
-                return $this->_username . ':' . $this->_password;
-            }
-            return false;
-        }
-        
-        /**
-         *    Replaces . and .. sections of the path.
-         *    @param string $path    Unoptimised path.
-         *    @return string         Path with dots removed if possible.
-         *    @access public
-         */
-        function normalisePath($path) {
-            $path = preg_replace('|/[^/]+/\.\./|', '/', $path);
-            return preg_replace('|/\./|', '/', $path);
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/user_agent.php b/htdocs/TESTS/simpletest/user_agent.php
deleted file mode 100644 (file)
index a2b7a9d..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: user_agent.php,v 1.38 2004/06/30 20:40:07 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/http.php');
-    require_once(dirname(__FILE__) . '/authentication.php');
-    /**#@-*/
-   
-    define('DEFAULT_MAX_REDIRECTS', 3);
-    define('DEFAULT_CONNECTION_TIMEOUT', 15);
-    
-    /**
-     *    Repository for cookies. This stuff is a
-     *    tiny bit browser dependent.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleCookieJar {
-        var $_cookies;
-        
-        /**
-         *    Constructor. Jar starts empty.
-         *    @access public
-         */
-        function SimpleCookieJar() {
-            $this->_cookies = array();
-        }
-        
-        /**
-         *    Removes expired and temporary cookies as if
-         *    the browser was closed and re-opened.
-         *    @param string/integer $now   Time to test expiry against.
-         *    @access public
-         */
-        function restartSession($date = false) {
-            $surviving_cookies = array();
-            for ($i = 0; $i < count($this->_cookies); $i++) {
-                if (! $this->_cookies[$i]->getValue()) {
-                    continue;
-                }
-                if (! $this->_cookies[$i]->getExpiry()) {
-                    continue;
-                }
-                if ($date && $this->_cookies[$i]->isExpired($date)) {
-                    continue;
-                }
-                $surviving_cookies[] = $this->_cookies[$i];
-            }
-            $this->_cookies = $surviving_cookies;
-        }
-        
-        /**
-         *    Ages all cookies in the cookie jar.
-         *    @param integer $interval     The old session is moved
-         *                                 into the past by this number
-         *                                 of seconds. Cookies now over
-         *                                 age will be removed.
-         *    @access public
-         */
-        function agePrematurely($interval) {
-            for ($i = 0; $i < count($this->_cookies); $i++) {
-                $this->_cookies[$i]->agePrematurely($interval);
-            }
-        }
-        
-        /**
-         *    Adds a cookie to the jar. This will overwrite
-         *    cookies with matching host, paths and keys.
-         *    @param SimpleCookie $cookie        New cookie.
-         *    @access public
-         */
-        function setCookie($cookie) {
-            for ($i = 0; $i < count($this->_cookies); $i++) {
-                $is_match = $this->_isMatch(
-                        $cookie,
-                        $this->_cookies[$i]->getHost(),
-                        $this->_cookies[$i]->getPath(),
-                        $this->_cookies[$i]->getName());
-                if ($is_match) {
-                    $this->_cookies[$i] = $cookie;
-                    return;
-                }
-            }
-            $this->_cookies[] = $cookie;
-        }
-        
-        /**
-         *    Fetches a hash of all valid cookies filtered
-         *    by host, path and keyed by name
-         *    Any cookies with missing categories will not
-         *    be filtered out by that category. Expired
-         *    cookies must be cleared by restarting the session.
-         *    @param string $host   Host name requirement.
-         *    @param string $path   Path encompassing cookies.
-         *    @return hash          Valid cookie objects keyed
-         *                          on the cookie name.
-         *    @access public
-         */
-        function getValidCookies($host = false, $path = "/") {
-            $valid_cookies = array();
-            foreach ($this->_cookies as $cookie) {
-                if ($this->_isMatch($cookie, $host, $path, $cookie->getName())) {
-                    $valid_cookies[] = $cookie;
-                }
-            }
-            return $valid_cookies;
-        }
-        
-        /**
-         *    Tests cookie for matching against search
-         *    criteria.
-         *    @param SimpleTest $cookie    Cookie to test.
-         *    @param string $host          Host must match.
-         *    @param string $path          Cookie path must be shorter than
-         *                                 this path.
-         *    @param string $name          Name must match.
-         *    @return boolean              True if matched.
-         *    @access private
-         */
-        function _isMatch($cookie, $host, $path, $name) {
-            if ($cookie->getName() != $name) {
-                return false;
-            }
-            if ($host && $cookie->getHost() && !$cookie->isValidHost($host)) {
-                return false;
-            }
-            if (! $cookie->isValidPath($path)) {
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Adds the current cookies to a request.
-         *    @param SimpleHttpRequest $request    Request to modify.
-         *    @param SimpleUrl $url                Cookie selector.
-         *    @access private
-         */
-        function addHeaders(&$request, $url) {
-            $cookies = $this->getValidCookies($url->getHost(), $url->getPath());
-            foreach ($cookies as $cookie) {
-                $request->setCookie($cookie);
-            }
-        }
-    }
-
-    /**
-     *    Fetches web pages whilst keeping track of
-     *    cookies and authentication.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class SimpleUserAgent {
-        var $_cookie_jar;
-        var $_authenticator;
-        var $_max_redirects;
-        var $_proxy;
-        var $_proxy_username;
-        var $_proxy_password;
-        var $_connection_timeout;
-        var $_additional_headers;
-        
-        /**
-         *    Starts with no cookies, realms or proxies.
-         *    @access public
-         */
-        function SimpleUserAgent() {
-            $this->_cookie_jar = &new SimpleCookieJar();
-            $this->_authenticator = &new SimpleAuthenticator();
-            $this->setMaximumRedirects(DEFAULT_MAX_REDIRECTS);
-            $this->_proxy = false;
-            $this->_proxy_username = false;
-            $this->_proxy_password = false;
-            $this->setConnectionTimeout(DEFAULT_CONNECTION_TIMEOUT);
-            $this->_additional_headers = array();
-        }
-        
-        /**
-         *    Removes expired and temporary cookies as if
-         *    the browser was closed and re-opened.
-         *    @param string/integer $date   Time when session restarted.
-         *                                  If omitted then all persistent
-         *                                  cookies are kept.
-         *    @access public
-         */
-        function restartSession($date = false) {
-            $this->_cookie_jar->restartSession($date);
-        }
-        
-        /**
-         *    Adds a header to every fetch.
-         *    @param string $header       Header line to add to every
-         *                                request until cleared.
-         *    @access public
-         */
-        function addHeader($header) {
-            $this->_additional_headers[] = $header;
-        }
-        
-        /**
-         *    Ages the cookies by the specified time.
-         *    @param integer $interval    Amount in seconds.
-         *    @access public
-         */
-        function ageCookies($interval) {
-            $this->_cookie_jar->agePrematurely($interval);
-        }
-        
-        /**
-         *    Sets an additional cookie. If a cookie has
-         *    the same name and path it is replaced.
-         *    @param string $name            Cookie key.
-         *    @param string $value           Value of cookie.
-         *    @param string $host            Host upon which the cookie is valid.
-         *    @param string $path            Cookie path if not host wide.
-         *    @param string $expiry          Expiry date.
-         *    @access public
-         */
-        function setCookie($name, $value, $host = false, $path = '/', $expiry = false) {
-            $cookie = new SimpleCookie($name, $value, $path, $expiry);
-            if ($host) {
-                $cookie->setHost($host);
-            }
-            $this->_cookie_jar->setCookie($cookie);
-        }
-        
-        /**
-         *    Reads the most specific cookie value from the
-         *    browser cookies.
-         *    @param string $host        Host to search.
-         *    @param string $path        Applicable path.
-         *    @param string $name        Name of cookie to read.
-         *    @return string             False if not present, else the
-         *                               value as a string.
-         *    @access public
-         */
-        function getCookieValue($host, $path, $name) {
-            $longest_path = '';
-            foreach ($this->_cookie_jar->getValidCookies($host, $path) as $cookie) {
-                if ($name == $cookie->getName()) {
-                    if (strlen($cookie->getPath()) > strlen($longest_path)) {
-                        $value = $cookie->getValue();
-                        $longest_path = $cookie->getPath();
-                    }
-                }
-            }
-            return (isset($value) ? $value : false);
-        }
-        
-        /**
-         *    Reads the current cookies within the base URL.
-         *    @param string $name     Key of cookie to find.
-         *    @param SimpleUrl $base  Base URL to search from.
-         *    @return string          Null if there is no base URL, false
-         *                            if the cookie is not set.
-         *    @access public
-         */
-        function getBaseCookieValue($name, $base) {
-            if (! $base) {
-                return null;
-            }
-            return $this->getCookieValue($base->getHost(), $base->getPath(), $name);
-        }
-        
-        /**
-         *    Sets the socket timeout for opening a connection.
-         *    @param integer $timeout      Maximum time in seconds.
-         *    @access public
-         */
-        function setConnectionTimeout($timeout) {
-            $this->_connection_timeout = $timeout;
-        }
-        
-        /**
-         *    Sets the maximum number of redirects before
-         *    a page will be loaded anyway.
-         *    @param integer $max        Most hops allowed.
-         *    @access public
-         */
-        function setMaximumRedirects($max) {
-            $this->_max_redirects = $max;
-        }
-        
-        /**
-         *    Sets proxy to use on all requests for when
-         *    testing from behind a firewall. Set URL
-         *    to false to disable.
-         *    @param string $proxy        Proxy URL.
-         *    @param string $username     Proxy username for authentication.
-         *    @param string $password     Proxy password for authentication.
-         *    @access public
-         */
-        function useProxy($proxy, $username, $password) {
-            if (! $proxy) {
-                $this->_proxy = false;
-                return;
-            }
-            if (strncmp($proxy, 'http://', 7) != 0) {
-                $proxy = 'http://'. $proxy;
-            }
-            $this->_proxy = &new SimpleUrl($proxy);
-            $this->_proxy_username = $username;
-            $this->_proxy_password = $password;
-        }
-        
-        /**
-         *    Test to see if the redirect limit is passed.
-         *    @param integer $redirects        Count so far.
-         *    @return boolean                  True if over.
-         *    @access private
-         */
-        function _isTooManyRedirects($redirects) {
-            return ($redirects > $this->_max_redirects);
-        }
-        
-        /**
-         *    Sets the identity for the current realm.
-         *    @param string $host        Host to which realm applies.
-         *    @param string $realm       Full name of realm.
-         *    @param string $username    Username for realm.
-         *    @param string $password    Password for realm.
-         *    @access public
-         */
-        function setIdentity($host, $realm, $username, $password) {
-            $this->_authenticator->setIdentityForRealm($host, $realm, $username, $password);
-        }
-        
-        /**
-         *    Fetches a URL as a response object. Will keep trying if redirected.
-         *    It will also collect authentication realm information.
-         *    @param string $method         GET, POST, etc.
-         *    @param string/SimpleUrl $url  Target to fetch.
-         *    @param hash $parameters       Additional parameters for request.
-         *    @return SimpleHttpResponse    Hopefully the target page.
-         *    @access public
-         */
-        function &fetchResponse($method, $url, $parameters = false) {
-            if ($method != 'POST') {
-                $url->addRequestParameters($parameters);
-                $parameters = false;
-            }
-            $response = &$this->_fetchWhileRedirected($method, $url, $parameters);
-            if ($headers = $response->getHeaders()) {
-                if ($headers->isChallenge()) {
-                    $this->_authenticator->addRealm(
-                            $url,
-                            $headers->getAuthentication(),
-                            $headers->getRealm());
-                }
-            }
-            return $response;
-        }
-        
-        /**
-         *    Fetches the page until no longer redirected or
-         *    until the redirect limit runs out.
-         *    @param string $method         GET, POST, etc.
-         *    @param SimpleUrl $url         Target to fetch.
-         *    @param hash $parameters       Additional parameters for request.
-         *    @return SimpleHttpResponse    Hopefully the target page.
-         *    @access private
-         */
-        function &_fetchWhileRedirected($method, $url, $parameters) {
-            $redirects = 0;
-            do {
-                $response = &$this->_fetch($method, $url, $parameters);
-                if ($response->isError()) {
-                    return $response;
-                }
-                $headers = $response->getHeaders();
-                $location = new SimpleUrl($headers->getLocation());
-                $url = $location->makeAbsolute($url);
-                $this->_addCookiesToJar($url, $headers->getNewCookies());
-                if (! $headers->isRedirect()) {
-                    break;
-                }
-                $method = 'GET';
-                $parameters = false;
-            } while (! $this->_isTooManyRedirects(++$redirects));
-            return $response;
-        }
-        
-        /**
-         *    Actually make the web request.
-         *    @param string $method       GET, POST, etc.
-         *    @param SimpleUrl $url       Target to fetch.
-         *    @param hash $parameters     Additional parameters for request.
-         *    @return SimpleHttpResponse  Headers and hopefully content.
-         *    @access protected
-         */
-        function &_fetch($method, $url, $parameters) {
-            if (! $parameters) {
-                $parameters = array();
-            }
-            $request = &$this->_createRequest($method, $url, $parameters);
-            return $request->fetch($this->_connection_timeout);
-        }
-        
-        /**
-         *    Creates a full page request.
-         *    @param string $method       Fetching method.
-         *    @param SimpleUrl $url       Target to fetch as url object.
-         *    @param hash $parameters     POST/GET parameters.
-         *    @return SimpleHttpRequest   New request.
-         *    @access private
-         */
-        function &_createRequest($method, $url, $parameters) {
-            $request = &$this->_createHttpRequest($method, $url, $parameters);
-            $this->_addAdditionalHeaders($request);
-            $this->_cookie_jar->addHeaders($request, $url);
-            $this->_authenticator->addHeaders($request, $url);
-            return $request;
-        }
-        
-        /**
-         *    Builds the appropriate HTTP request object.
-         *    @param string $method       Fetching method.
-         *    @param SimpleUrl $url       Target to fetch as url object.
-         *    @param hash $parameters     POST/GET parameters.
-         *    @return SimpleHttpRequest   New request object.
-         *    @access protected
-         */
-        function &_createHttpRequest($method, $url, $parameters) {
-            if ($method == 'POST') {
-                $request = &new SimpleHttpPostRequest(
-                        $this->_createRoute($url),
-                        $parameters);
-                return $request;
-            }
-            if ($parameters) {
-                $url->addRequestParameters($parameters);
-            }
-            return new SimpleHttpRequest($this->_createRoute($url), $method);
-        }
-        
-        /**
-         *    Sets up either a direct route or via a proxy.
-         *    @param SimpleUrl $url   Target to fetch as url object.
-         *    @return SimpleRoute     Route to take to fetch URL.
-         *    @access protected
-         */
-        function &_createRoute($url) {
-            if ($this->_proxy) {
-                return new SimpleProxyRoute(
-                        $url,
-                        $this->_proxy,
-                        $this->_proxy_username,
-                        $this->_proxy_password);
-            }
-            return new SimpleRoute($url);
-        }
-        
-        /**
-         *    Adds additional manual headers.
-         *    @param SimpleHttpRequest $request    Outgoing request.
-         *    @access private
-         */
-        function _addAdditionalHeaders(&$request) {
-            foreach ($this->_additional_headers as $header) {
-                $request->addHeaderLine($header);
-            }
-        }
-        
-        /**
-         *    Extracts new cookies into the cookie jar.
-         *    @param SimpleUrl $url     Target to fetch as url object.
-         *    @param array $cookies     New cookies.
-         *    @access private
-         */
-        function _addCookiesToJar($url, $cookies) {
-            foreach ($cookies as $cookie) {
-                if ($url->getHost()) {
-                    $cookie->setHost($url->getHost());
-                }
-                $this->_cookie_jar->setCookie($cookie);
-            }
-        }
-    }
-?>
\ No newline at end of file
diff --git a/htdocs/TESTS/simpletest/web_tester.php b/htdocs/TESTS/simpletest/web_tester.php
deleted file mode 100644 (file)
index d1bacb6..0000000
+++ /dev/null
@@ -1,1099 +0,0 @@
-<?php
-    /**
-     * Base include file for SimpleTest.
-     * @package        SimpleTest
-     * @subpackage     WebTester
-     * @version        $Id: web_tester.php,v 1.77 2004/08/04 23:48:51 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/simple_test.php');
-    require_once(dirname(__FILE__) . '/browser.php');
-    require_once(dirname(__FILE__) . '/page.php');
-    require_once(dirname(__FILE__) . '/expectation.php');
-    /**#@-*/
-    
-    /**
-     *    Test for an HTML widget value match.
-        *        @package SimpleTest
-        *        @subpackage WebTester
-     */
-    class FieldExpectation extends SimpleExpectation {
-        var $_value;
-        
-        /**
-         *    Sets the field value to compare against.
-         *    @param mixed $value        Test value to match.
-         *    @access public
-         */
-        function FieldExpectation($value) {
-            $this->SimpleExpectation();
-            if (is_array($value)) {
-                sort($value);
-            }
-            $this->_value = $value;
-        }
-        
-        /**
-         *    Tests the expectation. True if it matches
-         *    a string value or an array value in any order.
-         *    @param mixed $compare        Comparison value. False for
-         *                                 an unset field.
-         *    @return boolean              True if correct.
-         *    @access public
-         */
-        function test($compare) {
-            if ($this->_value === false) {
-                return ($compare === false);
-            }
-            if ($this->_isSingle($this->_value)) {
-                return $this->_testSingle($compare);
-            }
-            if (is_array($this->_value)) {
-                return $this->_testMultiple($compare);
-            }
-            return false;
-        }
-        
-        /**
-         *    Tests for valid field comparisons.
-         *    @param mixed $value       Value to type check.
-         *    @return boolean           True if integer, string or float.
-         *    @access private
-         */
-        function _isSingle($value) {
-            return is_string($value) || is_integer($value) || is_float($value);
-        }
-        
-        /**
-         *    String comparison for simple field.
-         *    @param mixed $compare    String to test against.
-         *    @returns boolean         True if matching.
-         *    @access private
-         */
-        function _testSingle($compare) {
-            if (is_array($compare) && count($compare) == 1) {
-                $compare = $compare[0];
-            }
-            if (! $this->_isSingle($compare)) {
-                return false;
-            }
-            return ($this->_value == $compare);
-        }
-        
-        /**
-         *    List comparison for multivalue field.
-         *    @param mixed $compare    List in any order to test against.
-         *    @returns boolean         True if matching.
-         *    @access private
-         */
-        function _testMultiple($compare) {
-            if (is_string($compare)) {
-                $compare = array($compare);
-            }
-            if (! is_array($compare)) {
-                return false;
-            }
-            sort($compare);
-            return ($this->_value === $compare);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Comparison value.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $dumper = &$this->_getDumper();
-            if (is_array($compare)) {
-                sort($compare);
-            }
-            if ($this->test($compare)) {
-                return "Field expectation [" . $dumper->describeValue($this->_value) . "]";
-            } else {
-                return "Field expectation [" . $dumper->describeValue($this->_value) .
-                        "] fails with [" .
-                        $this->_dumper->describeValue($compare) . "] " .
-                        $this->_dumper->describeDifference($this->_value, $compare);
-            }
-        }
-    }
-    
-    /**
-     *    Test for a specific HTTP header within a header block.
-        *        @package SimpleTest
-        *        @subpackage WebTester
-     */
-    class HttpHeaderExpectation extends SimpleExpectation {
-        var $_expected_header;
-        var $_expected_value;
-        
-        /**
-         *    Sets the field and value to compare against.
-         *    @param string $header   Case insenstive trimmed header name.
-         *    @param string $value    Optional value to compare. If not
-         *                            given then any value will match.
-         */
-        function HttpHeaderExpectation($header, $value = false) {
-            $this->_expected_header = $this->_normaliseHeader($header);
-            $this->_expected_value = $value;
-        }
-        
-        /**
-         *    Accessor for subclases.
-         *    @return mixed        Expectation set in constructor.
-         *    @access protected
-         */
-        function _getExpectation() {
-            return $this->_expected_value;
-        }
-        
-        /**
-         *    Removes whitespace at ends and case variations.
-         *    @param string $header    Name of header.
-         *    @param string            Trimmed and lowecased header
-         *                             name.
-         *    @access private
-         */
-        function _normaliseHeader($header) {
-            return strtolower(trim($header));
-        }
-        
-        /**
-         *    Tests the expectation. True if it matches
-         *    a string value or an array value in any order.
-         *    @param mixed $compare   Raw header block to search.
-         *    @return boolean         True if header present.
-         *    @access public
-         */
-        function test($compare) {
-            return is_string($this->_findHeader($compare));
-        }
-        
-        /**
-         *    Searches the incoming result. Will extract the matching
-         *    line as text.
-         *    @param mixed $compare   Raw header block to search.
-         *    @return string          Matching header line.
-         *    @access protected
-         */
-        function _findHeader($compare) {
-            $lines = explode("\r\n", $compare);
-            foreach ($lines as $line) {
-                if ($this->_testHeaderLine($line)) {
-                    return $line;
-                }
-            }
-            return false;
-        }
-        
-        /**
-         *    Compares a single header line against the expectation.
-         *    @param string $line      A single line to compare.
-         *    @return boolean          True if matched.
-         *    @access private
-         */
-        function _testHeaderLine($line) {
-            if (count($parsed = explode(':', $line)) < 2) {
-                return false;
-            }
-            list($header, $value) = $parsed;
-            if ($this->_normaliseHeader($header) != $this->_expected_header) {
-                return false;
-            }
-            return $this->_testHeaderValue($value, $this->_expected_value);
-        }
-        
-        /**
-         *    Tests the value part of the header.
-         *    @param string $value        Value to test.
-         *    @param mixed $expected      Value to test against.
-         *    @return boolean             True if matched.
-         *    @access protected
-         */
-        function _testHeaderValue($value, $expected) {
-            if ($expected === false) {
-                return true;
-            }
-            return (trim($value) == trim($expected));
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Raw header block to search.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $expectation = $this->_expected_header;
-            if ($this->_expected_value) {
-                $expectation .= ': ' . $this->_expected_header;
-            }
-            if (is_string($line = $this->_findHeader($compare))) {
-                return "Searching for header [$expectation] found [$line]";
-            } else {
-                return "Failed to find header [$expectation]";
-            }
-        }
-    }
-      
-    /**
-     *    Test for a specific HTTP header within a header block that
-     *    should not be found.
-        *        @package SimpleTest
-        *        @subpackage WebTester
-     */
-    class HttpUnwantedHeaderExpectation extends HttpHeaderExpectation {
-        var $_expected_header;
-        var $_expected_value;
-        
-        /**
-         *    Sets the field and value to compare against.
-         *    @param string $unwanted   Case insenstive trimmed header name.
-         */
-        function HttpUnwantedHeaderExpectation($unwanted) {
-            $this->HttpHeaderExpectation($unwanted);
-        }
-        
-        /**
-         *    Tests that the unwanted header is not found.
-         *    @param mixed $compare   Raw header block to search.
-         *    @return boolean         True if header present.
-         *    @access public
-         */
-        function test($compare) {
-            return ($this->_findHeader($compare) === false);
-        }
-        
-        /**
-         *    Returns a human readable test message.
-         *    @param mixed $compare      Raw header block to search.
-         *    @return string             Description of success
-         *                               or failure.
-         *    @access public
-         */
-        function testMessage($compare) {
-            $expectation = $this->_getExpectation();
-            if (is_string($line = $this->_findHeader($compare))) {
-                return "Found unwanted header [$expectation] with [$line]";
-            } else {
-                return "Did not find unwanted header [$expectation]";
-            }
-        }
-    }
-      
-    /**
-     *    Test for a specific HTTP header within a header block.
-        *        @package SimpleTest
-        *        @subpackage WebTester
-     */
-    class HttpHeaderPatternExpectation extends HttpHeaderExpectation {
-        
-        /**
-         *    Sets the field and value to compare against.
-         *    @param string $header   Case insenstive header name.
-         *    @param string $pattern  Pattern to compare value against.
-         *    @access public
-         */
-        function HttpHeaderPatternExpectation($header, $pattern) {
-            $this->HttpHeaderExpectation($header, $pattern);
-        }
-        
-        /**
-         *    Tests the value part of the header.
-         *    @param string $value        Value to test.
-         *    @param mixed $pattern       Pattern to test against.
-         *    @return boolean             True if matched.
-         *    @access protected
-         */
-        function _testHeaderValue($value, $expected) {
-            return (boolean)preg_match($expected, trim($value));
-        }
-    }
-  
-    /**
-     *    Test case for testing of web pages. Allows
-     *    fetching of pages, parsing of HTML and
-     *    submitting forms.
-        *    @package SimpleTest
-        *    @subpackage WebTester
-     */
-    class WebTestCase extends SimpleTestCase {
-        var $_browser;
-        
-        /**
-         *    Creates an empty test case. Should be subclassed
-         *    with test methods for a functional test case.
-         *    @param string $label     Name of test case. Will use
-         *                             the class name if none specified.
-         *    @access public
-         */
-        function WebTestCase($label = false) {
-            $this->SimpleTestCase($label);
-        }
-        
-        /**
-         *    Gets the last response error.
-         *    @return string    Last low level HTTP error.
-         *    @access public
-         */
-        function getTransportError() {
-            return $this->_browser->getTransportError();
-        }
-          
-        /**
-         *    Accessor for the currently selected URL.
-         *    @return string        Current location or false if
-         *                          no page yet fetched.
-         *    @access public
-         */
-        function getUrl() {
-            $this->_browser->getUrl();
-        }
-        
-        /**
-         *    Dumps the current request for debugging.
-         *    @access public
-         */
-        function showRequest() {
-            $this->dump($this->_browser->getRequest());
-        }
-        
-        /**
-         *    Dumps the current HTTP headers for debugging.
-         *    @access public
-         */
-        function showHeaders() {
-            $this->dump($this->_browser->getHeaders());
-        }
-      
-        /**
-         *    Dumps the current HTML source for debugging.
-         *    @access public
-         */
-        function showSource() {
-            $this->dump($this->_browser->getContent());
-        }
-        
-        /**
-         *    Simulates the closing and reopening of the browser.
-         *    Temporary cookies will be discarded and timed
-         *    cookies will be expired if later than the
-         *    specified time.
-         *    @param string/integer $date Time when session restarted.
-         *                                If ommitted then all persistent
-         *                                cookies are kept. Time is either
-         *                                Cookie format string or timestamp.
-         *    @access public
-         */
-        function restartSession($date = false) {
-            if ($date === false) {
-                $date = time();
-            }
-            $this->_browser->restartSession($date);
-        }
-        
-        /**
-         *    Moves cookie expiry times back into the past.
-         *    Useful for testing timeouts and expiries.
-         *    @param integer $interval    Amount to age in seconds.
-         *    @access public
-         */
-        function ageCookies($interval) {
-            $this->_browser->ageCookies($interval);
-        }
-        
-        /**
-         *    Gets a current browser reference for setting
-         *    special expectations or for detailed
-         *    examination of page fetches.
-         *    @param SimpleBrowser $browser    Test browser object.
-         *    @access public
-         */
-        function &getBrowser() {
-            return $this->_browser;
-        }
-        
-        /**
-         *    Creates a new default web browser object.
-         *    Will be cleared at the end of the test method.
-         *    @return TestBrowser           New browser.
-         *    @access public
-         */
-        function &createBrowser() {
-            return new SimpleBrowser();
-        }
-        
-        /**
-         *    Sets up a browser for the start of each
-         *    test method.
-         *    @access public
-         */
-        function before() {
-            $this->_browser = &$this->createBrowser();
-            parent::before();
-        }
-        
-        /**
-         *    Disables frames support. Frames will not be fetched
-         *    and the frameset page will be used instead.
-         *    @access public
-         */
-        function ignoreFrames() {
-            $this->_browser->ignoreFrames();
-        }
-        
-        /**
-         *    Sets a cookie in the current browser.
-         *    @param string $name          Name of cookie.
-         *    @param string $value         Cookie value.
-         *    @param string $host          Host upon which the cookie is valid.
-         *    @param string $path          Cookie path if not host wide.
-         *    @param string $expiry        Expiry date.
-         *    @access public
-         */
-        function setCookie($name, $value, $host = false, $path = "/", $expiry = false) {
-            $this->_browser->setCookie($name, $value, $host, $path, $expiry);
-        }
-
-        /**
-         *    Adds a header to every fetch.
-         *    @param string $header       Header line to add to every
-         *                                request until cleared.
-         *    @access public
-         */
-        function addHeader($header) {
-            $this->_browser->addHeader($header);
-        }
-        
-        /**
-         *    Sets the maximum number of redirects before
-         *    the web page is loaded regardless.
-         *    @param integer $max        Maximum hops.
-         *    @access public
-         */
-        function setMaximumRedirects($max) {
-            if (! $this->_browser) {
-                trigger_error(
-                        'Can only set maximum redirects in a test method, setUp() or tearDown()');
-            }
-            $this->_browser->setMaximumRedirects($max);
-        }
-        
-        /**
-         *    Sets the socket timeout for opening a connection and
-         *    receiving at least one byte of information.
-         *    @param integer $timeout      Maximum time in seconds.
-         *    @access public
-         */
-        function setConnectionTimeout($timeout) {
-            $this->_browser->setConnectionTimeout($timeout);
-        }
-        
-        /**
-         *    Sets proxy to use on all requests for when
-         *    testing from behind a firewall. Set URL
-         *    to false to disable.
-         *    @param string $proxy        Proxy URL.
-         *    @param string $username     Proxy username for authentication.
-         *    @param string $password     Proxy password for authentication.
-         *    @access public
-         */
-        function useProxy($proxy, $username = false, $password = false) {
-            $this->_browser->useProxy($proxy, $username, $password);
-        }
-        
-        /**
-         *    Fetches a page into the page buffer. If
-         *    there is no base for the URL then the
-         *    current base URL is used. After the fetch
-         *    the base URL reflects the new location.
-         *    @param string $url          URL to fetch.
-         *    @param hash $parameters     Optional additional GET data.
-         *    @return boolean             True on success.
-         *    @access public
-         */
-        function get($url, $parameters = false) {
-            $content = $this->_browser->get($url, $parameters);
-            if ($content === false) {
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Fetches a page by POST into the page buffer.
-         *    If there is no base for the URL then the
-         *    current base URL is used. After the fetch
-         *    the base URL reflects the new location.
-         *    @param string $url          URL to fetch.
-         *    @param hash $parameters     Optional additional GET data.
-         *    @return boolean             True on success.
-         *    @access public
-         */
-        function post($url, $parameters = false) {
-            $content = $this->_browser->post($url, $parameters);
-            if ($content === false) {
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Does a HTTP HEAD fetch, fetching only the page
-         *    headers. The current base URL is unchanged by this.
-         *    @param string $url          URL to fetch.
-         *    @param hash $parameters     Optional additional GET data.
-         *    @return boolean             True on success.
-         *    @access public
-         */
-        function head($url, $parameters = false) {
-            return $this->_browser->head($url, $parameters);
-        }
-        
-        /**
-         *    Equivalent to hitting the retry button on the
-         *    browser. Will attempt to repeat the page fetch.
-         *    @return boolean     True if fetch succeeded.
-         *    @access public
-         */
-        function retry() {
-            return $this->_browser->retry();
-        }
-        
-        /**
-         *    Equivalent to hitting the back button on the
-         *    browser.
-         *    @return boolean     True if history entry and
-         *                        fetch succeeded.
-         *    @access public
-         */
-        function back() {
-            return $this->_browser->back();
-        }
-        
-        /**
-         *    Equivalent to hitting the forward button on the
-         *    browser.
-         *    @return boolean     True if history entry and
-         *                        fetch succeeded.
-         *    @access public
-         */
-        function forward() {
-            return $this->_browser->forward();
-        }
-        
-        /**
-         *    Retries a request after setting the authentication
-         *    for the current realm.
-         *    @param string $username    Username for realm.
-         *    @param string $password    Password for realm.
-         *    @return boolean            True if successful fetch. Note
-         *                               that authentication may still have
-         *                               failed.
-         *    @access public
-         */
-        function authenticate($username, $password) {
-            return $this->_browser->authenticate($username, $password);
-        }
-        
-        /**
-         *    Accessor for current frame focus. Will be
-         *    false if no frame has focus.
-         *    @return integer/string/boolean    Label if any, otherwise
-         *                                      the position in the frameset
-         *                                      or false if none.
-         *    @access public
-         */
-        function getFrameFocus() {
-            return $this->_browser->getFrameFocus();
-        }
-        
-        /**
-         *    Sets the focus by index. The integer index starts from 1.
-         *    @param integer $choice    Chosen frame.
-         *    @return boolean           True if frame exists.
-         *    @access public
-         */
-        function setFrameFocusByIndex($choice) {
-            return $this->_browser->setFrameFocusByIndex($choice);
-        }
-        
-        /**
-         *    Sets the focus by name.
-         *    @param string $name    Chosen frame.
-         *    @return boolean        True if frame exists.
-         *    @access public
-         */
-        function setFrameFocus($name) {
-            return $this->_browser->setFrameFocus($name);
-        }
-        
-        /**
-         *    Clears the frame focus. All frames will be searched
-         *    for content.
-         *    @access public
-         */
-        function clearFrameFocus() {
-            return $this->_browser->clearFrameFocus();
-        }
-        
-        /**
-         *    Clicks the submit button by label. The owning
-         *    form will be submitted by this.
-         *    @param string $label    Button label. An unlabeled
-         *                            button can be triggered by 'Submit'.
-         *    @return boolean         True on success.
-         *    @access public
-         */
-        function clickSubmit($label = 'Submit') {
-            return $this->_browser->clickSubmit($label);
-        }
-        
-        /**
-         *    Clicks the submit button by name attribute. The owning
-         *    form will be submitted by this.
-         *    @param string $name    Name attribute of button.
-         *    @return boolean        True on success.
-         *    @access public
-         */
-        function clickSubmitByName($name) {
-            return $this->_browser->clickSubmitByName($name);
-        }
-        
-        /**
-         *    Clicks the submit button by ID attribute. The owning
-         *    form will be submitted by this.
-         *    @param string $id      ID attribute of button.
-         *    @return boolean        True on successful submit.
-         *    @access public
-         */
-        function clickSubmitById($id) {
-            return $this->_browser->clickSubmitById($id);
-        }
-        
-        /**
-         *    Clicks the submit image by some kind of label. Usually
-         *    the alt tag or the nearest equivalent. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param string $label   Alt attribute of button.
-         *    @param integer $x      X-coordinate of imaginary click.
-         *    @param integer $y      Y-coordinate of imaginary click.
-         *    @return boolean        True on successful submit.
-         *    @access public
-         */
-        function clickImage($label, $x = 1, $y = 1) {
-            return $this->_browser->clickImage($label, $x, $y);
-        }
-        
-        /**
-         *    Clicks the submit image by the name. Usually
-         *    the alt tag or the nearest equivalent. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param string $name    Name attribute of button.
-         *    @param integer $x      X-coordinate of imaginary click.
-         *    @param integer $y      Y-coordinate of imaginary click.
-         *    @return boolean        True on successful submit.
-         *    @access public
-         */
-        function clickImageByName($name, $x = 1, $y = 1) {
-            return $this->_browser->clickImageByName($name, $x, $y);
-        }
-        
-        /**
-         *    Clicks the submit image by ID attribute. The owning
-         *    form will be submitted by this. Clicking outside of
-         *    the boundary of the coordinates will result in
-         *    a failure.
-         *    @param integer/string $id   ID attribute of button.
-         *    @param integer $x           X-coordinate of imaginary click.
-         *    @param integer $y           Y-coordinate of imaginary click.
-         *    @return boolean             True on successful submit.
-         *    @access public
-         */
-        function clickImageById($id, $x = 1, $y = 1) {
-            return $this->_browser->clickImageById($id, $x, $y);
-        }
-        
-        /**
-         *    Submits a form by the ID.
-         *    @param string $id    Form ID. No button information
-         *                         is submitted this way.
-         *    @return boolean      True on success.
-         *    @access public
-         */
-        function submitFormById($id) {
-            return $this->_browser->submitFormById($id);
-        }
-        
-        /**
-         *    Follows a link by name. Will click the first link
-         *    found with this link text by default, or a later
-         *    one if an index is given. Match is case insensitive
-         *    with normalised space.
-         *    @param string $label     Text between the anchor tags.
-         *    @param integer $index    Link position counting from zero.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function clickLink($label, $index = 0) {
-            return $this->_browser->clickLink($label, $index);
-        }
-        
-        /**
-         *    Follows a link by id attribute.
-         *    @param string $id        ID attribute value.
-         *    @return boolean          True if successful.
-         *    @access public
-         */
-        function clickLinkById($id) {
-            return $this->_browser->clickLinkById($id);
-        }
-        
-        /**
-         *    Tests for the presence of a link label. Match is
-         *    case insensitive with normalised space.
-         *    @param string $label     Text between the anchor tags.
-         *    @param string $message   Message to display. Default
-         *                             can be embedded with %s.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function assertLink($label, $message = "%s") {
-            return $this->assertTrue(
-                    $this->_browser->isLink($label),
-                    sprintf($message, "Link [$label] should exist"));
-        }
-
-        /**
-         *    Tests for the non-presence of a link label. Match is
-         *    case insensitive with normalised space.
-         *    @param string/integer $label    Text between the anchor tags
-         *                                    or ID attribute.
-         *    @param string $message          Message to display. Default
-         *                                    can be embedded with %s.
-         *    @return boolean                 True if link missing.
-         *    @access public
-         */
-        function assertNoLink($label, $message = "%s") {
-            return $this->assertFalse(
-                    $this->_browser->isLink($label) || $this->_browser->isLinkById($label),
-                    sprintf($message, "Link [$label] should not exist"));
-        }
-        
-        /**
-         *    Tests for the presence of a link id attribute.
-         *    @param string $id        Id attribute value.
-         *    @param string $message   Message to display. Default
-         *                             can be embedded with %s.
-         *    @return boolean          True if link present.
-         *    @access public
-         */
-        function assertLinkById($id, $message = "%s") {
-            return $this->assertTrue(
-                    $this->_browser->isLinkById($id),
-                    sprintf($message, "Link ID [$id] should exist"));
-        }
-        
-        /**
-         *    Sets all form fields with that name.
-         *    @param string $name    Name of field in forms.
-         *    @param string $value   New value of field.
-         *    @return boolean        True if field exists, otherwise false.
-         *    @access public
-         */
-        function setField($name, $value) {
-            return $this->_browser->setField($name, $value);
-        }
-          
-        /**
-         *    Sets all form fields with that name.
-         *    @param string/integer $id   Id of field in forms.
-         *    @param string $value        New value of field.
-         *    @return boolean             True if field exists, otherwise false.
-         *    @access public
-         */
-        function setFieldById($id, $value) {
-            return $this->_browser->setFieldById($id, $value);
-        }
-        
-        /**
-         *    Confirms that the form element is currently set
-         *    to the expected value. A missing form will always
-         *    fail. If no value is given then only the existence
-         *    of the field is checked.
-         *    @param string $name       Name of field in forms.
-         *    @param mixed $expected    Expected string/array value or
-         *                              false for unset fields.
-         *    @param string $message    Message to display. Default
-         *                              can be embedded with %s.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertField($name, $expected = true, $message = "%s") {
-            $value = $this->_browser->getField($name);
-            if ($expected === true) {
-                return $this->assertTrue(
-                        isset($value),
-                        sprintf($message, "Field [$name] should exist"));
-            } else {
-                return $this->assertExpectation(
-                        new FieldExpectation($expected),
-                        $value,
-                        sprintf($message, "Field [$name] should match with [%s]"));
-            }
-        }
-         
-        /**
-         *    Confirms that the form element is currently set
-         *    to the expected value. A missing form will always
-         *    fail. If no ID is given then only the existence
-         *    of the field is checked.
-         *    @param string/integer $id  Name of field in forms.
-         *    @param mixed $expected     Expected string/array value or
-         *                               false for unset fields.
-         *    @param string $message     Message to display. Default
-         *                               can be embedded with %s.
-         *    @return boolean            True if pass.
-         *    @access public
-         */
-        function assertFieldById($id, $expected = true, $message = "%s") {
-            $value = $this->_browser->getFieldById($id);
-            if ($expected === true) {
-                return $this->assertTrue(
-                        isset($value),
-                        sprintf($message, "Field of ID [$id] should exist"));
-            } else {
-                return $this->assertExpectation(
-                        new FieldExpectation($expected),
-                        $value,
-                        sprintf($message, "Field of ID [$id] should match with [%s]"));
-            }
-        }
-       
-        /**
-         *    Checks the response code against a list
-         *    of possible values.
-         *    @param array $responses    Possible responses for a pass.
-         *    @param string $message     Message to display. Default
-         *                               can be embedded with %s.
-         *    @return boolean            True if pass.
-         *    @access public
-         */
-        function assertResponse($responses, $message = '%s') {
-            $responses = (is_array($responses) ? $responses : array($responses));
-            $code = $this->_browser->getResponseCode();
-            $message = sprintf($message, "Expecting response in [" .
-                    implode(", ", $responses) . "] got [$code]");
-            return $this->assertTrue(in_array($code, $responses), $message);
-        }
-        
-        /**
-         *    Checks the mime type against a list
-         *    of possible values.
-         *    @param array $types      Possible mime types for a pass.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertMime($types, $message = '%s') {
-            $types = (is_array($types) ? $types : array($types));
-            $type = $this->_browser->getMimeType();
-            $message = sprintf($message, "Expecting mime type in [" .
-                    implode(", ", $types) . "] got [$type]");
-            return $this->assertTrue(in_array($type, $types), $message);
-        }
-        
-        /**
-         *    Attempt to match the authentication type within
-         *    the security realm we are currently matching.
-         *    @param string $authentication   Usually basic.
-         *    @param string $message          Message to display.
-         *    @return boolean                 True if pass.
-         *    @access public
-         */
-        function assertAuthentication($authentication = false, $message = '%s') {
-            if (! $authentication) {
-                $message = sprintf($message, "Expected any authentication type, got [" .
-                        $this->_browser->getAuthentication() . "]");
-                return $this->assertTrue(
-                        $this->_browser->getAuthentication(),
-                        $message);
-            } else {
-                $message = sprintf($message, "Expected authentication [$authentication] got [" .
-                        $this->_browser->getAuthentication() . "]");
-                return $this->assertTrue(
-                        strtolower($this->_browser->getAuthentication()) == strtolower($authentication),
-                        $message);
-            }
-        }
-        
-        /**
-         *    Checks that no authentication is necessary to view
-         *    the desired page.
-         *    @param string $message     Message to display.
-         *    @return boolean            True if pass.
-         *    @access public
-         */
-        function assertNoAuthentication($message = '%s') {
-            $message = sprintf($message, "Expected no authentication type, got [" .
-                    $this->_browser->getAuthentication() . "]");
-            return $this->assertFalse($this->_browser->getAuthentication(), $message);
-        }
-        
-        /**
-         *    Attempts to match the current security realm.
-         *    @param string $realm     Name of security realm.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertRealm($realm, $message = '%s') {
-            $message = sprintf($message, "Expected realm [$realm] got [" .
-                    $this->_browser->getRealm() . "]");
-            return $this->assertTrue(
-                    strtolower($this->_browser->getRealm()) == strtolower($realm),
-                    $message);
-        }
-        
-        /**
-         *    Checks each header line for the required value. If no
-         *    value is given then only an existence check is made.
-         *    @param string $header    Case insensitive header name.
-         *    @param string $value     Case sensitive trimmed string to
-         *                             match against.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertHeader($header, $value = false, $message = '%s') {
-            return $this->assertExpectation(
-                    new HttpHeaderExpectation($header, $value),
-                    $this->_browser->getHeaders(),
-                    $message);
-        }
-          
-        /**
-         *    Checks each header line for the required pattern.
-         *    @param string $header    Case insensitive header name.
-         *    @param string $pattern   Pattern to match value against.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertHeaderPattern($header, $pattern, $message = '%s') {
-            return $this->assertExpectation(
-                    new HttpHeaderPatternExpectation($header, $pattern),
-                    $this->_browser->getHeaders(),
-                    $message);
-        }
-
-        /**
-         *    Confirms that the header type has not been received.
-         *    Only the landing page is checked. If you want to check
-         *    redirect pages, then you should limit redirects so
-         *    as to capture the page you want.
-         *    @param string $header    Case insensitive header name.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertNoUnwantedHeader($header, $message = '%s') {
-            return $this->assertExpectation(
-                    new HttpUnwantedHeaderExpectation($header),
-                    $this->_browser->getHeaders(),
-                    $message);
-        }
-        
-        /**
-         *    Tests the text between the title tags.
-         *    @param string $title     Expected title or empty
-         *                             if expecting no title.
-         *    @param string $message   Message to display.
-         *    @return boolean          True if pass.
-         *    @access public
-         */
-        function assertTitle($title = false, $message = '%s') {
-            return $this->assertTrue(
-                    $title === $this->_browser->getTitle(),
-                    sprintf(
-                            $message,
-                            "Expecting title [$title] got [" . $this->_browser->getTitle() . "]"));
-        }
-        
-        /**
-         *    Will trigger a pass if the Perl regex pattern
-         *    is found in the raw content.
-         *    @param string $pattern    Perl regex to look for including
-         *                              the regex delimiters.
-         *    @param string $message    Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertWantedPattern($pattern, $message = '%s') {
-            return $this->assertExpectation(
-                    new WantedPatternExpectation($pattern),
-                    $this->_browser->getContent(),
-                    $message);
-        }
-        
-        /**
-         *    Will trigger a pass if the perl regex pattern
-         *    is not present in raw content.
-         *    @param string $pattern    Perl regex to look for including
-         *                              the regex delimiters.
-         *    @param string $message    Message to display.
-         *    @return boolean           True if pass.
-         *    @access public
-         */
-        function assertNoUnwantedPattern($pattern, $message = "%s") {
-            return $this->assertExpectation(
-                    new UnwantedPatternExpectation($pattern),
-                    $this->_browser->getContent(),
-                    $message);
-        }
-        
-        /**
-         *    Checks that a cookie is set for the current page
-         *    and optionally checks the value.
-         *    @param string $name        Name of cookie to test.
-         *    @param string $expected    Expected value as a string or
-         *                               false if any value will do.
-         *    @param string $message     Message to display.
-         *    @return boolean            True if pass.
-         *    @access public
-         */
-        function assertCookie($name, $expected = false, $message = "%s") {
-            $value = $this->_browser->getCurrentCookieValue($name);
-            if ($expected) {
-                return $this->assertTrue($value === $expected, sprintf(
-                        $message,
-                        "Expecting cookie [$name] value [$expected], got [$value]"));
-            } else {
-                return $this->assertTrue(
-                        $value,
-                        sprintf($message, "Expecting cookie [$name]"));
-            }
-        }
-        
-        /**
-         *    Checks that no cookie is present or that it has
-         *    been successfully cleared.
-         *    @param string $name        Name of cookie to test.
-         *    @param string $message     Message to display.
-         *    @return boolean            True if pass.
-         *    @access public
-         */
-        function assertNoCookie($name, $message = "%s") {
-            return $this->assertTrue(
-                    $this->_browser->getCurrentCookieValue($name) === false,
-                    sprintf($message, "Not expecting cookie [$name]"));
-        }
-    }
-?>
diff --git a/htdocs/TESTS/simpletest/xml.php b/htdocs/TESTS/simpletest/xml.php
deleted file mode 100644 (file)
index bcd74db..0000000
+++ /dev/null
@@ -1,615 +0,0 @@
-<?php
-    /**
-     * base include file for SimpleTest
-     * @package        SimpleTest
-     * @subpackage     UnitTester
-     * @version        $Id: xml.php,v 1.20 2004/08/04 22:09:39 lastcraft Exp $
-     */
-
-    /**#@+
-     * include other SimpleTest class files
-     */
-    require_once(dirname(__FILE__) . '/scorer.php');
-    /**#@-*/
-   
-    /**
-     *    Creates the XML needed for remote communication
-     *    by SimpleTest.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class XmlReporter extends SimpleReporter {
-        var $_indent;
-        var $_namespace;
-        
-        /**
-         *    Does nothing yet.
-         *    @access public
-         */
-        function XmlReporter($namespace = false, $indent = '  ') {
-            $this->SimpleReporter();
-            $this->_namespace = ($namespace ? $namespace . ':' : '');
-            $this->_indent = $indent;
-        }
-        
-        /**
-         *    Calculates the pretty printing indent level
-         *    from the current level of nesting.
-         *    @param integer $offset  Extra indenting level.
-         *    @return string          Leading space.
-         *    @access protected
-         */
-        function _getIndent($offset = 0) {
-            return str_repeat(
-                    $this->_indent,
-                    count($this->getTestList()) + $offset);
-        }
-        
-        /**
-         *    Converts character string to parsed XML
-         *    entities string.
-         *    @param string text        Unparsed character data.
-         *    @return string            Parsed character data.
-         *    @access public
-         */
-        function toParsedXml($text) {
-            return str_replace(
-                    array('&', '<', '>', '"', '\''),
-                    array('&amp;', '&lt;', '&gt;', '&quot;', '&apos;'),
-                    $text);
-        }
-        
-        /**
-         *    Paints the start of a group test.
-         *    @param string $test_name   Name of test that is starting.
-         *    @param integer $size       Number of test cases starting.
-         *    @access public
-         */
-        function paintGroupStart($test_name, $size) {
-            parent::paintGroupStart($test_name, $size);
-            print $this->_getIndent();
-            print "<" . $this->_namespace . "group size=\"$size\">\n";
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "name>" .
-                    $this->toParsedXml($test_name) .
-                    "</" . $this->_namespace . "name>\n";
-        }
-        
-        /**
-         *    Paints the end of a group test.
-         *    @param string $test_name   Name of test that is ending.
-         *    @access public
-         */
-        function paintGroupEnd($test_name) {
-            print $this->_getIndent();
-            print "</" . $this->_namespace . "group>\n";
-            parent::paintGroupEnd($test_name);
-        }
-        
-        /**
-         *    Paints the start of a test case.
-         *    @param string $test_name   Name of test that is starting.
-         *    @access public
-         */
-        function paintCaseStart($test_name) {
-            parent::paintCaseStart($test_name);
-            print $this->_getIndent();
-            print "<" . $this->_namespace . "case>\n";
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "name>" .
-                    $this->toParsedXml($test_name) .
-                    "</" . $this->_namespace . "name>\n";
-        }
-        
-        /**
-         *    Paints the end of a test case.
-         *    @param string $test_name   Name of test that is ending.
-         *    @access public
-         */
-        function paintCaseEnd($test_name) {
-            print $this->_getIndent();
-            print "</" . $this->_namespace . "case>\n";
-            parent::paintCaseEnd($test_name);
-        }
-        
-        /**
-         *    Paints the start of a test method.
-         *    @param string $test_name   Name of test that is starting.
-         *    @access public
-         */
-        function paintMethodStart($test_name) {
-            parent::paintMethodStart($test_name);
-            print $this->_getIndent();
-            print "<" . $this->_namespace . "test>\n";
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "name>" .
-                    $this->toParsedXml($test_name) .
-                    "</" . $this->_namespace . "name>\n";
-        }
-        
-        /**
-         *    Paints the end of a test method.
-         *    @param string $test_name   Name of test that is ending.
-         *    @param integer $progress   Number of test cases ending.
-         *    @access public
-         */
-        function paintMethodEnd($test_name) {
-            print $this->_getIndent();
-            print "</" . $this->_namespace . "test>\n";
-            parent::paintMethodEnd($test_name);
-        }
-        
-        /**
-         *    Increments the pass count.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintPass($message) {
-            parent::paintPass($message);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "pass>";
-            print $this->toParsedXml($message);
-            print "</" . $this->_namespace . "pass>\n";
-        }
-        
-        /**
-         *    Increments the fail count.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         */
-        function paintFail($message) {
-            parent::paintFail($message);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "fail>";
-            print $this->toParsedXml($message);
-            print "</" . $this->_namespace . "fail>\n";
-        }
-        
-        /**
-         *    Paints a PHP error or exception.
-         *    @param string $message        Message is ignored.
-         *    @access public
-         *    @abstract
-         */
-        function paintException($message) {
-            parent::paintException($message);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "exception>";
-            print $this->toParsedXml($message);
-            print "</" . $this->_namespace . "exception>\n";
-        }
-
-        /**
-         *    Paints a simple supplementary message.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintMessage($message) {
-            parent::paintMessage($message);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "message>";
-            print $this->toParsedXml($message);
-            print "</" . $this->_namespace . "message>\n";
-        }
-        
-        /**
-         *    Paints a formatted ASCII message such as a
-         *    variable dump.
-         *    @param string $message        Text to display.
-         *    @access public
-         */
-        function paintFormattedMessage($message) {
-            parent::paintFormattedMessage($message);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "formatted>";
-            print "<![CDATA[$message]]>";
-            print "</" . $this->_namespace . "formatted>\n";
-        }
-
-        /**
-         *    Serialises the event object.
-         *    @param string $type        Event type as text.
-         *    @param mixed $payload      Message or object.
-         *    @access public
-         */
-        function paintSignal($type, &$payload) {
-            parent::paintSignal($type, $payload);
-            print $this->_getIndent(1);
-            print "<" . $this->_namespace . "signal type=\"$type\">";
-            print "<![CDATA[" . serialize($payload) . "]]>";
-            print "</" . $this->_namespace . "signal>\n";
-        }
-
-        /**
-         *    Paints the test document header.
-         *    @param string $test_name     First test top level
-         *                                 to start.
-         *    @access public
-         *    @abstract
-         */
-        function paintHeader($test_name) {
-            if (! SimpleReporter::inCli()) {
-                header('Content-type: text/xml');
-            }
-            print "<?xml version=\"1.0\"";
-            if ($this->_namespace) {
-                print " xmlns:" . $this->_namespace .
-                        "=\"www.lastcraft.com/SimpleTest/Beta3/Report\"";
-            }
-            print "?>\n";
-            print "<" . $this->_namespace . "run>\n";
-        }
-        
-        /**
-         *    Paints the test document footer.
-         *    @param string $test_name        The top level test.
-         *    @access public
-         *    @abstract
-         */
-        function paintFooter($test_name) {
-            print "</" . $this->_namespace . "run>\n";
-        }
-    }
-    
-    /**
-     *    Accumulator for incoming tag. Holds the
-     *    incoming test structure information for
-     *    later dispatch to the reporter.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NestingXmlTag {
-        var $_name;
-        var $_attributes;
-        
-        /**
-         *    Sets the basic test information except
-         *    the name.
-         *    @param hash $attributes   Name value pairs.
-         *    @access public
-         */
-        function NestingXmlTag($attributes) {
-            $this->_name = false;
-            $this->_attributes = $attributes;
-        }
-        
-        /**
-         *    Sets the test case/method name.
-         *    @param string $name        Name of test.
-         *    @access public
-         */
-        function setName($name) {
-            $this->_name = $name;
-        }
-        
-        /**
-         *    Accessor for name.
-         *    @return string        Name of test.
-         *    @access public
-         */
-        function getName() {
-            return $this->_name;
-        }
-        
-        /**
-         *    Accessor for attributes.
-         *    @return hash        All attributes.
-         *    @access protected
-         */
-        function _getAttributes() {
-            return $this->_attributes;
-        }
-    }
-    
-    /**
-     *    Accumulator for incoming method tag. Holds the
-     *    incoming test structure information for
-     *    later dispatch to the reporter.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NestingMethodTag extends NestingXmlTag {
-        
-        /**
-         *    Sets the basic test information except
-         *    the name.
-         *    @param hash $attributes   Name value pairs.
-         *    @access public
-         */
-        function NestingMethodTag($attributes) {
-            $this->NestingXmlTag($attributes);
-        }
-        
-        /**
-         *    Signals the appropriate start event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintStart(&$listener) {
-            $listener->paintMethodStart($this->getName());
-        }    
-        
-        /**
-         *    Signals the appropriate end event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintEnd(&$listener) {
-            $listener->paintMethodEnd($this->getName());
-        }
-    }
-    
-    /**
-     *    Accumulator for incoming case tag. Holds the
-     *    incoming test structure information for
-     *    later dispatch to the reporter.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NestingCaseTag extends NestingXmlTag {
-        
-        /**
-         *    Sets the basic test information except
-         *    the name.
-         *    @param hash $attributes   Name value pairs.
-         *    @access public
-         */
-        function NestingCaseTag($attributes) {
-            $this->NestingXmlTag($attributes);
-        }
-        
-        /**
-         *    Signals the appropriate start event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintStart(&$listener) {
-            $listener->paintCaseStart($this->getName());
-        }    
-        
-        /**
-         *    Signals the appropriate end event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintEnd(&$listener) {
-            $listener->paintCaseEnd($this->getName());
-        }
-    }
-    
-    /**
-     *    Accumulator for incoming group tag. Holds the
-     *    incoming test structure information for
-     *    later dispatch to the reporter.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class NestingGroupTag extends NestingXmlTag {
-        
-        /**
-         *    Sets the basic test information except
-         *    the name.
-         *    @param hash $attributes   Name value pairs.
-         *    @access public
-         */
-        function NestingGroupTag($attributes) {
-            $this->NestingXmlTag($attributes);
-        }
-
-        /**
-         *    Signals the appropriate start event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintStart(&$listener) {
-            $listener->paintGroupStart($this->getName(), $this->getSize());
-        }
-        
-        /**
-         *    Signals the appropriate end event on the
-         *    listener.
-         *    @param SimpleReporter $listener    Target for events.
-         *    @access public
-         */
-        function paintEnd(&$listener) {
-            $listener->paintGroupEnd($this->getName());
-        }
-        
-        /**
-         *    The size in the attributes.
-         *    @return integer     Value of size attribute or zero.
-         *    @access public
-         */
-        function getSize() {
-            $attributes = $this->_getAttributes();
-            if (isset($attributes['SIZE'])) {
-                return (integer)$attributes['SIZE'];
-            }
-            return 0;
-        }
-    }
-    
-    /**
-     *    Parser for importing the output of the XmlReporter.
-     *    Dispatches that output to another reporter.
-        *        @package SimpleTest
-        *        @subpackage UnitTester
-     */
-    class SimpleTestXmlParser {
-        var $_listener;
-        var $_expat;
-        var $_tag_stack;
-        var $_in_content_tag;
-        var $_content;
-        var $_attributes;
-        
-        /**
-         *    Loads a listener with the SimpleReporter
-         *    interface.
-         *    @param SimpleReporter $listener   Listener of tag events.
-         *    @access public
-         */
-        function SimpleTestXmlParser(&$listener) {
-            $this->_listener = &$listener;
-            $this->_expat = &$this->_createParser();
-            $this->_tag_stack = array();
-            $this->_in_content_tag = false;
-            $this->_content = '';
-            $this->_attributes = array();
-        }
-        
-        /**
-         *    Parses a block of XML sending the results to
-         *    the listener.
-         *    @param string $chunk        Block of text to read.
-         *    @return boolean             True if valid XML.
-         *    @access public
-         */
-        function parse($chunk) {
-            if (! xml_parse($this->_expat, $chunk)) {
-                trigger_error('XML parse error with ' .
-                        xml_error_string(xml_get_error_code($this->_expat)));
-                return false;
-            }
-            return true;
-        }
-        
-        /**
-         *    Sets up expat as the XML parser.
-         *    @return resource        Expat handle.
-         *    @access protected
-         */
-        function &_createParser() {
-            $expat = xml_parser_create();
-            xml_set_object($expat, $this);
-            xml_set_element_handler($expat, '_startElement', '_endElement');
-            xml_set_character_data_handler($expat, '_addContent');
-            xml_set_default_handler($expat, '_default');
-            return $expat;
-        }
-        
-        /**
-         *    Opens a new test nesting level.
-         *    @return NestedXmlTag     The group, case or method tag
-         *                             to start.
-         *    @access private
-         */
-        function _pushNestingTag($nested) {
-            array_unshift($this->_tag_stack, $nested);
-        }
-        
-        /**
-         *    Accessor for current test structure tag.
-         *    @return NestedXmlTag     The group, case or method tag
-         *                             being parsed.
-         *    @access private
-         */
-        function &_getCurrentNestingTag() {
-            return $this->_tag_stack[0];
-        }
-        
-        /**
-         *    Ends a nesting tag.
-         *    @return NestedXmlTag     The group, case or method tag
-         *                             just finished.
-         *    @access private
-         */
-        function _popNestingTag() {
-            return array_shift($this->_tag_stack);
-        }
-        
-        /**
-         *    Test if tag is a leaf node with only text content.
-         *    @param string $tag        XML tag name.
-         *    @return @boolean          True if leaf, false if nesting.
-         *    @private
-         */
-        function _isLeaf($tag) {
-            return in_array(
-                    $tag,
-                    array('NAME', 'PASS', 'FAIL', 'EXCEPTION', 'MESSAGE', 'FORMATTED', 'SIGNAL'));
-        }
-
-        /**
-         *    Handler for start of event element.
-         *    @param resource $expat     Parser handle.
-         *    @param string $tag         Element name.
-         *    @param hash $attributes    Name value pairs.
-         *                               Attributes without content
-         *                               are marked as true.
-         *    @access protected
-         */
-        function _startElement($expat, $tag, $attributes) {
-            $this->_attributes = $attributes;
-            if ($tag == 'GROUP') {
-                $this->_pushNestingTag(new NestingGroupTag($attributes));
-            } elseif ($tag == 'CASE') {
-                $this->_pushNestingTag(new NestingCaseTag($attributes));
-            } elseif ($tag == 'TEST') {
-                $this->_pushNestingTag(new NestingMethodTag($attributes));
-            } elseif ($this->_isLeaf($tag)) {
-                $this->_in_content_tag = true;
-                $this->_content = '';
-            }
-        }
-        
-        /**
-         *    End of element event.
-         *    @param resource $expat     Parser handle.
-         *    @param string $tag         Element name.
-         *    @access protected
-         */
-        function _endElement($expat, $tag) {
-            $this->_in_content_tag = false;
-            if (in_array($tag, array('GROUP', 'CASE', 'TEST'))) {
-                $nesting_tag = $this->_popNestingTag();
-                $nesting_tag->paintEnd($this->_listener);
-            } elseif ($tag == 'NAME') {
-                $nesting_tag = &$this->_getCurrentNestingTag();
-                $nesting_tag->setName($this->_content);
-                $nesting_tag->paintStart($this->_listener);
-            } elseif ($tag == 'PASS') {
-                $this->_listener->paintPass($this->_content);
-            } elseif ($tag == 'FAIL') {
-                $this->_listener->paintFail($this->_content);
-            } elseif ($tag == 'EXCEPTION') {
-                $this->_listener->paintException($this->_content);
-            } elseif ($tag == 'SIGNAL') {
-                $this->_listener->paintSignal(
-                        $this->_attributes['TYPE'],
-                        unserialize($this->_content));
-            } elseif ($tag == 'MESSAGE') {
-                $this->_listener->paintMessage($this->_content);
-            } elseif ($tag == 'FORMATTED') {
-                $this->_listener->paintFormattedMessage($this->_content);
-            }
-        }
-        
-        /**
-         *    Content between start and end elements.
-         *    @param resource $expat     Parser handle.
-         *    @param string $text        Usually output messages.
-         *    @access protected
-         */
-        function _addContent($expat, $text) {
-            if ($this->_in_content_tag) {
-                $this->_content .= $text;
-            }
-            return true;
-        }
-        
-        /**
-         *    XML and Doctype handler. Discards all such content.
-         *    @param resource $expat     Parser handle.
-         *    @param string $default     Text of default content.
-         *    @access protected
-         */
-        function _default($expat, $default) {
-        }
-    }
-?>
diff --git a/htdocs/TESTS/xorg_env.php b/htdocs/TESTS/xorg_env.php
deleted file mode 100644 (file)
index 5387cc7..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-<?php
-require_once("__init__.php");
-require_once('include/platal/env.inc.php');
-
-class TestOfEnv extends UnitTestCase {
-    function TestOfEnv() {
-        $this->UnitTestCase('Env access');
-    }
-
-    function test_get() {
-        $_REQUEST['foo'] = 'baz';
-        $this->assertIdentical(Env::get('foo'), 'baz');
-        
-        $_REQUEST['foo'] = 123;
-        $this->assertIdentical(Env::get('foo'), '123');
-
-        $_REQUEST['foo'] = '123';
-        $this->assertIdentical(Env::get('foo'), '123');
-
-        $this->assertIdentical(Env::get('bar'), '');
-        $this->assertIdentical(Env::get('bar', 'bar'), 'bar');
-    }
-    
-    function test_getMixed() {
-        $_REQUEST['foo'] = 'baz';
-        $this->assertIdentical(Env::getMixed('foo'), 'baz');
-        
-        $_REQUEST['foo'] = 123;
-        $this->assertIdentical(Env::getMixed('foo'), 123);
-
-        $_REQUEST['foo'] = Array(1,'a');
-        $this->assertIdentical(Env::getMixed('foo'), Array(1,'a'));
-
-        $this->assertIdentical(Env::getMixed('bar'), null);
-        $this->assertIdentical(Env::getMixed('bar', 'bar'), 'bar');
-    }
-    
-    function test_getBool() {
-        $_REQUEST['foo'] = 'baz';
-        $this->assertIdentical(Env::getBool('foo'), true);
-        
-        $_REQUEST['foo'] = 123;
-        $this->assertIdentical(Env::getBool('foo'), true);
-
-        $_REQUEST['foo'] = '123';
-        $this->assertIdentical(Env::getBool('foo'), true);
-
-        $this->assertIdentical(Env::getBool('bar'), false);
-        $this->assertIdentical(Env::getBool('bar', true), true);
-    }
-    
-    function test_getInt() {
-        $_REQUEST['foo'] = 'baz';
-        $this->assertIdentical(Env::getInt('foo'), 0);
-        $this->assertIdentical(Env::getInt('foo', 10), 10);
-        
-        $_REQUEST['foo'] = 123;
-        $this->assertIdentical(Env::getInt('foo'), 123);
-
-        $_REQUEST['foo'] = '123';
-        $this->assertIdentical(Env::getInt('foo'), 123);
-
-        $this->assertIdentical(Env::getInt('bar'), 0);
-        $this->assertIdentical(Env::getInt('bar', 123), 123);
-    }
-    
-    function test_kill() {
-        $_REQUEST['foo'] = 'baz';
-        Env::kill('foo');
-        $this->assertFalse(isset($_REQUEST['foo']));
-    }
-    
-    function test_other_class() {
-        $_POST['foo'] = 'baz';
-        Post::kill('foo');
-        $this->assertFalse(isset($_POST['foo']));
-        
-        $_GET['foo'] = 'baz';
-        Get::kill('foo');
-        $this->assertFalse(isset($_GET['foo']));
-    }
-}
-
-$test = &new TestOfEnv();
-$test->run($reporter);
-?>
diff --git a/htdocs/TESTS/xorg_errors.php b/htdocs/TESTS/xorg_errors.php
deleted file mode 100644 (file)
index fbcdfe4..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<?php
-require_once("__init__.php");
-require_once('include/platal/errors.inc.php');
-
-class TestOfXOrgErrors extends UnitTestCase {
-    function TestOfXOrgErrors() {
-        $this->UnitTestCase('XOrgErrors Test');
-    }
-
-    function testCreatingXOrgErrors() {
-        $errors = new XOrgErrors();
-        $this->assertIdentical($errors->errs, Array());
-        $this->assertIdentical($errors->failure, false);
-    }
-
-    function testTrig() {
-        $errors = new XOrgErrors();
-        $errors->trig("Foo error");
-        $this->assertIdentical($errors->errs, Array("Foo error"));
-        $this->assertIdentical($errors->failure, false);
-    }
-
-    function testFail() {
-        $errors = new XOrgErrors();
-        $errors->fail("Foo error");
-        $this->assertIdentical($errors->errs, Array("Foo error"));
-        $this->assertIdentical($errors->failure, true);
-    }
-}
-
-$test = &new TestOfXOrgErrors();
-$test->run($reporter);
-?>
diff --git a/htdocs/TESTS/xorg_lists.php b/htdocs/TESTS/xorg_lists.php
deleted file mode 100644 (file)
index 1d3dbd1..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-<?php
-require_once("__init__.php");
-require_once('include/lists.inc.php');
-
-class TestOfList extends UnitTestCase {
-    function TestOfList() {
-        $this->UnitTestCase('List functions');
-    }
-
-    function test_list_sort_owners() {
-        $l1 = Array('xavier.merlin.1998@polytechnique.org',
-                'xavier.merlin.1991@polytechnique.org',
-                'pierre.habouzit.2000@polytechnique.org',
-                'yann.chevalier.2000@polytechnique.org',
-                'foobar@baz.org');
-
-        $t = list_sort_owners($l1);
-        $this->assertIdentical($t[0][0]['l'], 'foobar@baz.org');
-
-        $t1991 = array_values($t[1991]);
-        $this->assertIdentical($t1991[0]['l'], 'xavier.merlin.1991');
-        
-        $t1998 = array_values($t[1998]);
-        $this->assertIdentical($t1998[0]['l'], 'xavier.merlin.1998');
-        
-        $t2000 = array_values($t[2000]);
-        $this->assertIdentical($t2000[0]['l'], 'yann.chevalier.2000');
-        $this->assertIdentical($t2000[1]['l'], 'pierre.habouzit.2000');
-        
-        $t = list_sort_owners($l1, false);
-        $this->assertIdentical($t[0][0]['l'], 'foobar@baz.org');
-
-        $tC = array_values($t['C']);
-        $this->assertIdentical($tC[0]['l'], 'yann.chevalier.2000');
-        
-        $tH = array_values($t['H']);
-        $this->assertIdentical($tH[0]['l'], 'pierre.habouzit.2000');
-
-        $tM = array_values($t['M']);
-        $this->assertIdentical($tM[0]['l'], 'xavier.merlin.1991');
-        $this->assertIdentical($tM[1]['l'], 'xavier.merlin.1998');
-    }
-}
-
-$test = &new TestOfList();
-$test->run($reporter);
-?>
diff --git a/htdocs/TESTS/xorg_user.php b/htdocs/TESTS/xorg_user.php
deleted file mode 100644 (file)
index c489341..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-require_once("__init__.php");
-require_once('include/user.func.inc.php');
-require_once('xorg/page.inc.php');
-
-Mock::generate('XorgPage');
-
-class TestOfXOrgUsers extends UnitTestCase {
-    function TestOfXOrgUsers() {
-        $this->UnitTestCase('Users functions');
-    }
-
-    function test_get_user_login() {
-        global $page;
-        $page = new MockXorgPage($this, 'index.tpl');
-        $page->expectCallCount('trig',5);
-        
-
-        $login = get_user_login(18742);
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login(100000000);
-        $this->assertIdentical($login, false);
-
-
-        $login = get_user_login("madcoder@melix.org");
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login("madcoder@melix.net");
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login("devnullr@melix.net");
-        $this->assertIdentical($login, false);
-       
-
-        $login = get_user_login("madcoder@polytechnique.org");
-        $this->assertIdentical($login, 'madcoder');
-        $login = get_user_login("madcoder@polytechnique.org", true);
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login("madcoder@m4x.org");
-        $this->assertIdentical($login, 'madcoder');
-        $login = get_user_login("qwerty@polytechnique.org");
-        $this->assertIdentical($login, false);
-        
-
-        $login = get_user_login("pierre.habouzit.2000");
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login("pierre.habouzit.2001");
-        $this->assertIdentical($login, false);
-        
-        
-        $login = get_user_login("madcoder@olympe.madism.org");
-        $this->assertIdentical($login, 'pierre.habouzit.2000');
-        $login = get_user_login("qwerty@olympe.madism.org");
-        $this->assertIdentical($login, false);
-        
-        $page->tally();
-        unset($page);
-    }
-}
-
-$test = &new TestOfXOrgUsers();
-$test->run($reporter);
-?>