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

📄 testresult.h

📁 C++ class libraries for network-centric, portable applications, integrated perfectly with the C++ St
💻 H
字号:
//// TestResult.h//// $Id: //poco/1.2/CppUnit/include/CppUnit/TestResult.h#1 $//#ifndef CppUnit_TestResult_INCLUDED#define CppUnit_TestResult_INCLUDED#include "CppUnit/CppUnit.h"#include "CppUnit/Guards.h"#include "CppUnit/TestFailure.h"#include <vector>namespace CppUnit {class CppUnitException;class Test;/* * A TestResult collects the results of executing a test case. It is an * instance of the Collecting Parameter pattern. * * The test framework distinguishes between failures and errors. * A failure is anticipated and checked for with assertions. Errors are * unanticipated problems signified by exceptions that are not generated * by the framework. * * TestResult supplies a template method 'setSynchronizationObject ()' * so that subclasses can provide mutual exclusion in the face of multiple * threads.  This can be useful when tests execute in one thread and * they fill a subclass of TestResult which effects change in another * thread.  To have mutual exclusion, override setSynchronizationObject () * and make sure that you create an instance of ExclusiveZone at the * beginning of each method. * * see Test */class CppUnit_API TestResult{	REFERENCEOBJECT (TestResult)public:	TestResult();	virtual ~TestResult();	virtual void addError(Test* test, CppUnitException* e);	virtual void addFailure(Test* test, CppUnitException* e);	virtual void startTest(Test* test);	virtual void endTest(Test* test);	virtual int runTests();	virtual int testErrors();	virtual int testFailures();	virtual bool wasSuccessful();	virtual bool shouldStop();	virtual void stop();	virtual std::vector<TestFailure*>& errors();	virtual std::vector<TestFailure*>& failures();	class SynchronizationObject	{	public:		SynchronizationObject()		{		}				virtual ~SynchronizationObject()		{		}		virtual void lock()		{		}				virtual void unlock()		{		}	};	class ExclusiveZone	{		SynchronizationObject* m_syncObject;	public:		ExclusiveZone(SynchronizationObject* syncObject): m_syncObject(syncObject)		{			m_syncObject->lock();		}		~ExclusiveZone()		{			m_syncObject->unlock();		}	};protected:	virtual void setSynchronizationObject(SynchronizationObject* syncObject);	std::vector<TestFailure*> _errors;	std::vector<TestFailure*> _failures;	int _runTests;	bool _stop;	SynchronizationObject* _syncObject;};// Construct a TestResultinline TestResult::TestResult(): _syncObject(new SynchronizationObject()){	_runTests = 0; 	_stop = false;}// Adds an error to the list of errors. The passed in exception// caused the errorinline void TestResult::addError(Test* test, CppUnitException* e){	ExclusiveZone zone(_syncObject); 	_errors.push_back(new TestFailure(test, e));}// Adds a failure to the list of failures. The passed in exception// caused the failure.inline void TestResult::addFailure(Test* test, CppUnitException* e){	ExclusiveZone zone(_syncObject); 	_failures.push_back(new TestFailure(test, e));}// Informs the result that a test will be started.inline void TestResult::startTest(Test* test){	ExclusiveZone zone(_syncObject); 	_runTests++;}// Informs the result that a test was completed.inline void TestResult::endTest(Test* test){	ExclusiveZone zone(_syncObject);}// Gets the number of run tests.inline int TestResult::runTests(){	ExclusiveZone zone(_syncObject); 	return _runTests;}// Gets the number of detected errors.inline int TestResult::testErrors(){	ExclusiveZone zone(_syncObject); 	return (int) _errors.size();}// Gets the number of detected failures.inline int TestResult::testFailures(){	ExclusiveZone zone(_syncObject); 	return (int) _failures.size();}// Returns whether the entire test was successful or not.inline bool TestResult::wasSuccessful(){	ExclusiveZone zone(_syncObject); 	return _failures.size() == 0 && _errors.size () == 0; }// Returns a std::vector of the errors.inline std::vector<TestFailure*>& TestResult::errors(){	ExclusiveZone zone(_syncObject); 	return _errors;}// Returns a std::vector of the failures.inline std::vector<TestFailure*>& TestResult::failures(){	ExclusiveZone zone(_syncObject); 	return _failures;}// Returns whether testing should be stoppedinline bool TestResult::shouldStop(){	ExclusiveZone zone(_syncObject); 	return _stop;}// Stop testinginline void TestResult::stop(){	ExclusiveZone zone(_syncObject); 	_stop = true;}// Accept a new synchronization object for protection of this instance// TestResult assumes ownership of the objectinline void TestResult::setSynchronizationObject(SynchronizationObject* syncObject){	delete _syncObject; 	_syncObject = syncObject;}} // namespace CppUnit#endif // CppUnit_TestResult_INCLUDED

⌨️ 快捷键说明

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