xml.php.svn-base

来自「PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。」· SVN-BASE 代码 · 共 648 行 · 第 1/2 页

SVN-BASE
648
字号
<?php/** *  base include file for SimpleTest *  @package    SimpleTest *  @subpackage UnitTester *  @version    $Id: xml.php 1723 2008-04-08 00:34:10Z lastcraft $ *//**#@+ *  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;    /**     *    Sets up indentation and namespace.     *    @param string $namespace        Namespace to add to each tag.     *    @param string $indent           Indenting to add on each nesting.     *    @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);    }    /**     *    Paints pass as XML.     *    @param string $message        Message to encode.     *    @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";    }    /**     *    Paints failure as XML.     *    @param string $message        Message to encode.     *    @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 error as XML.     *    @param string $message        Message to encode.     *    @access public     */    function paintError($message) {        parent::paintError($message);        print $this->_getIndent(1);        print "<" . $this->_namespace . "exception>";        print $this->toParsedXml($message);        print "</" . $this->_namespace . "exception>\n";    }    /**     *    Paints exception as XML.     *    @param Exception $exception    Exception to encode.     *    @access public     */    function paintException($exception) {        parent::paintException($exception);        print $this->_getIndent(1);        print "<" . $this->_namespace . "exception>";        $message = 'Unexpected exception of type [' . get_class($exception) .                '] with message ['. $exception->getMessage() .                '] in ['. $exception->getFile() .                ' line ' . $exception->getLine() . ']';        print $this->toParsedXml($message);        print "</" . $this->_namespace . "exception>\n";    }    /**     *    Paints the skipping message and tag.     *    @param string $message        Text to display in skip tag.     *    @access public     */    function paintSkip($message) {        parent::paintSkip($message);        print $this->_getIndent(1);        print "<" . $this->_namespace . "skip>";        print $this->toParsedXml($message);        print "</" . $this->_namespace . "skip>\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;    }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?