phpt_test.php.inc

来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· INC 代码 · 共 404 行

INC
404
字号
<?php@include_once 'Text/Diff.php';@include_once 'Text/Diff/Renderer.php';@include_once 'Text/Diff/Renderer/unified.php';require_once 'PEAR/ErrorStack.php';require_once 'PEAR.php';class PEAR_PHPTest{    var $_diffonly;    var $_errors;    function PEAR_PHPTest($diffonly = false)    {        $this->_diffonly = $diffonly;        $this->_errors = array();        PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array(&$this, 'pearerrorCallback'));        PEAR_ErrorStack::setDefaultCallback(array(&$this, 'pearerrorstackCallback'));    }    function pearerrorCallback($err)    {        PEAR_ErrorStack::staticPush('PEAR_Error', -1, 'error', array('obj' => $err),            $err->getMessage());    }    function pearerrorstackCallback($err)    {        $this->_errors[] = $err;    }    function assertPEARError($err, $message)    {        if (is_a($err, 'PEAR_Error')) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Not a PEAR_Error\n";        return false;    }    function assertNoErrors($message, $trace = null)    {        if (count($this->_errors) == 0) {            return true;        }        if ($trace === null) {            $trace = debug_backtrace();        }        $this->_failTest($trace, $message);        foreach ($this->_errors as $err) {            if ($err['package'] == 'PEAR_Error') {                echo "Unexpected PEAR_Error:\n";                echo 'message "' . $err['message'] . "\"\n";            } else {                echo "Unexpected PEAR_ErrorStack error:\n";                echo 'package "' . $err['package'] . "\"\n";                echo 'message "' . $err['message'] . "\"\n";            }        }        $this->_errors = array();        return false;    }    function assertErrors($errors, $message, $trace = null)    {        if (!count($this->_errors)) {            if ($trace === null) {                $trace = debug_backtrace();            }            $this->_failTest($trace, $message);            echo "No errors caught, but errors were expected\n";            return false;        }        if (!isset($errors[0])) {            $errors = array($errors);        }        $failed = false;        foreach ($errors as $err) {            $found = false;            foreach ($this->_errors as $i => $caughterror) {                if ($caughterror['package'] == $err['package']) {                    if ($caughterror['message'] == $err['message']) {                        $found = true;                        break;                    }                }            }            if ($found) {                unset($this->_errors[$i]);                continue;            }            if (!$failed) {                if ($trace === null) {                    $trace = debug_backtrace();                }                $failed = true;                $this->_failTest($trace, $message);            }            echo "Unthrown error:\n";            if ($err['package'] == 'PEAR_Error') {                echo "PEAR_Error:\n";            } else {                echo "error package: \"$err[package]\"\n";            }            echo "message: \"$err[message]\"\n";        }        if (count($this->_errors)) {            if (!$failed) {                if ($trace === null) {                    $trace = debug_backtrace();                }                $failed = true;                $this->_failTest($trace, $message);            }            foreach ($this->_errors as $err) {                echo "Unexpected error:\n";                if ($err['package'] == 'PEAR_Error') {                    echo "PEAR_Error:\n";                } else {                    echo "error package: \"$err[package]\"\n";                }                echo "message: \"$err[message]\"\n";            }        }        $this->_errors = array();        return !$failed;    }    function assertTrue($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test === true) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected non-true value: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertIsa($control, $test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (is_a($test, $control)) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected non-$control object: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertNull($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test === null) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected non-null value: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertNotNull($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test !== null) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected null: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertSame($test, $test1, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test === $test1) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpectedly two vars are not the same thing: \n";        echo "\n'$message'\n";        return false;    }    function assertNotSame($test, $test1, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test !== $test1) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpectedly two vars are the same thing: \n";        echo "\n'$message'\n";        return false;    }    function assertFalse($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test === false) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected non-false value: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertNotTrue($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (!$test) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected loose true value: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertNotFalse($test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if ($test) {            return true;        }        $this->_failTest(debug_backtrace(), $message);        echo "Unexpected loose false value: \n";        var_export($test);        echo "\n'$message'\n";        return false;    }    function assertEquals($control, $test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (str_replace(array("\r", "\n"), array('', ''),            var_export($control, true)) != str_replace(array("\r", "\n"), array('', ''),            var_export($test, true))) {            $this->_failTest(debug_backtrace(), $message);            if (class_exists('Text_Diff')) {                echo "Diff of expecting/received:\n";                $diff = &new Text_Diff(                    explode("\n", var_export($control, true)),                    explode("\n", var_export($test, true)));                // Output the diff in unified format.                $renderer = &new Text_Diff_Renderer_unified();                echo $renderer->render($diff);                if ($this->_diffonly) {                    return false;                }            }            echo "Expecting:\n";            var_export($control);            echo "\nReceived:\n";            var_export($test);            return false;        }        return true;    }    function assertFileExists($fname, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (!@file_exists($fname)) {            $this->_failTest(debug_backtrace(), $message);            echo "File '$fname' does not exist, and should\n";            return false;        }        return true;    }    function assertFileNotExists($fname, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (@file_exists($fname)) {            $this->_failTest(debug_backtrace(), $message);            echo "File '$fname' exists, and should not\n";            return false;        }        return true;    }    function assertRegEquals($dump, &$reg, $message)    {        $actualdump = var_export(trim($this->dumpReg($reg)), true);        $testdump = var_export(trim($dump), true);        return $this->assertEquals($testdump, $actualdump, $message);    }    function assertPackageInfoEquals($control, $test, $message)    {        $this->assertNoErrors($message, debug_backtrace());        if (isset($control[0])) {            if (!isset($test[0]) || (count($control) != count($test))) {                echo "Invalid packageInfo\n";                $ret = $this->assertEquals($control, $test, $message);            }            $ret = true;            foreach ($control as $i => $packageinfo) {                $ret = $ret &&                    $this->assertPackageInfoEquals($packageinfo, $test[$i], $message . $i);            }            return $ret;        }        if (isset($control['_lastmodified'])) {            if (!isset($test['_lastmodified'])) {                echo "_lastmodified is not set in packageInfo() output\n";                $this->_failTest(debug_backtrace(), $message);                return false;            }        }        $savecontrol = $control;        $savetest = $test;        unset($control['_lastmodified']);        unset($test['_lastmodified']);        if (var_export($control, true) != var_export($test, true)) {            $this->_failTest(debug_backtrace(), $message);            if (class_exists('Text_Diff')) {                echo "Diff of expecting/received:\n";                $diff = &new Text_Diff(                    explode("\n", var_export($control, true)),                    explode("\n", var_export($test, true)));                // Output the diff in unified format.                $renderer = &new Text_Diff_Renderer_unified();                echo $renderer->render($diff);                if ($this->_diffonly) {                    return false;                }            }            echo "Expecting:\n";            var_export($savecontrol);            echo "\nReceived:\n";            var_export($savetest);            return false;        }        return true;    }    function dumpReg(&$reg)    {        ob_start();        print "dumping registry...\n";        $infos = $reg->packageInfo(null, null, null);        foreach ($infos as $channel => $info) {            echo "channel $channel:\n";            foreach ($info as $pkg) {                print $pkg["name"] . ":";                unset($pkg["name"]);                foreach ($pkg as $k => $v) {                    if ($k == '_lastmodified') {                        print " _lastmodified is set";                        continue;                    }                    if (is_array($v) && $k == 'filelist') {                        print " $k=array(";                        $i = 0;                        foreach ($v as $k2 => $v2) {                            if ($i++ > 0) print ",";                            print "{$k2}[";                            $j = 0;                            foreach ($v2 as $k3 => $v3) {                                if ($j++ > 0) print ",";                                print "$k3=$v3";                            }                            print "]";                        }                        print ")";                    } else {                        print " $k=\"$v\"";                    }                }                print "\n";            }        }        print "dump done\n";        $ret = ob_get_contents();        ob_end_clean();        return $ret;    }    function _failTest($trace, $message)    {        echo 'Test Failure: "' . $message  . "\"\n in " . $trace[0]['file'] . ' line ' .            $trace[0]['line'] . "\n";    }    function showAll()    {        $this->_diffonly = false;    }}?>

⌨️ 快捷键说明

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