⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 verify.hxx

📁 sip中的md5测试源码,可以进行md5加密认证的
💻 HXX
字号:
#ifndef VERIFY_HXX_#define VERIFY_HXX_/* ==================================================================== * The Vovida Software License, Version 1.0  *  * Copyright (c) 2000 Vovida Networks, Inc.  All rights reserved. *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: *  * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. *  * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. *  * 3. The names "VOCAL", "Vovida Open Communication Application Library", *    and "Vovida Open Communication Application Library (VOCAL)" must *    not be used to endorse or promote products derived from this *    software without prior written permission. For written *    permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor *    may "VOCAL" appear in their name, without prior written *    permission of Vovida Networks, Inc. *  * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. *  * ==================================================================== *  * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc.  For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */static const char* const Verify_hxx_Version =    "$Id: Verify.hxx,v 1.8 2002/02/09 02:43:16 bko Exp $";#include "global.h"#include <iostream>#include <set>#include <string>using std::set;using std::string;namespace Vocal {    namespace Threads {        class Mutex;    }}using Vocal::Threads::Mutex;/* Usage: * * test_verify(test_condition); * * where test_condition is a boolean condition (like in assert). * Unlike assert, test_verify does not stop execution. *  *  * * Here is a sample program: * * #include "Verify.hxx" * int main() * { *     test_verify(0 == 0);  // this should pass *     test_verify(1 == 0);  // this should fail *     return test_return_code(2); * } * * the output of this program: * * VerifyTestShort.cxx:5: test case '1 == 0' failed * VerifySummary:VerifyTestShort.cxx:2:1:1:0:0 * * ---------------------------------------------------------------------- * Report for VerifyTestShort.cxx *  * Summary: FAIL *  * Total Number of Test Cases: 2 * Number of Test Cases run: 2 *  * test_verify() *     Expected:   2 *     Passes:     1 *     Fails:      1 *  * test_bug() *     Expected:   0 *     Bugs:       0 *     Fixed Bugs: 0 *  *  * ====================================================================== *//// singleton class used to count the number of test cases that pass / failclass TestStatistics{    public:	/// called when a test (see below) passes	static void passed();	/// called when a test (see below) fails	static void failed();	/// called when a test (see below) is broken	static void broken();	/// called when a test (see below) is broken	static void unexpectedPass();        /// called when a coverage point is called        static void covered(const char * filename, 			    int line, 			    const char * label);    /** called by a global object that is constructed in Verify.cxx on        finish to output a summary of results */	static int finish(const char* filename, int testcase_count);    protected:	TestStatistics();	TestStatistics(const TestStatistics&);	~TestStatistics();    private:	const TestStatistics & operator=(const TestStatistics&);	static TestStatistics * myInstance;	static Mutex * myMutex;	int myPassed;	int myFailed;	int myBroken;	int myUnexpectedPass;        struct CoverageInfo        {            CoverageInfo(const char * pFile, int pLine, const char * pLabel)                :   file(pFile), line(pLine), label(pLabel ? pLabel : "")            {}                        string      file;            int         line;            string      label;                        bool operator<(const CoverageInfo & src) const            {                return ( file == src.file ? line < src.line : file < src.file );            }        };        set<CoverageInfo>   myCovered;};/** the following is a macro which implements the test system.   * Usage: *     test_verify(condition_to_verify); */#define test_verify(x) \    do { \         if(!(x)) \         { \               cerr << __FILE__ << ':' << __LINE__ << ": test case '" << \            #x << "' failed" << endl;  \            TestStatistics::failed(); \         } \         else \		  TestStatistics::passed(); \       } while(0)/** TODO -- replace this with support for the rest of the system to * understand the concept of brokenness. */#define test_bug(x) \    do { \         if((x)) \         { \               cerr << __FILE__ << ':' << __LINE__ << ": test case '" << \            #x << "' unexpected pass (passed when fail expected)" << endl;  \            TestStatistics::unexpectedPass(); \         } \         else \		  TestStatistics::broken(); \       } while(0)/** the following is a macro which allow a programmer to insert coverage points */ #if defined(VOCAL_TEST_COVERAGE)    #define test_covered(x) TestStatistics::covered(__FILE__, __LINE__, (x))#else    #define test_covered(x)#endif/** the following is a macro which implements the test system.   * Usage: *     test_return_code(testcase_count)  */#define test_return_code(testcase_count) \    TestStatistics::finish(__FILE__, (testcase_count))/* Local Variables: *//* c-file-style: "stroustrup" *//* indent-tabs-mode: nil *//* c-file-offsets: ((access-label . -) (inclass . ++)) *//* c-basic-offset: 4 *//* End: */#endif

⌨️ 快捷键说明

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