ActiveTest.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef CPPUNIT_ACTIVETEST_H
  2. #define CPPUNIT_ACTIVETEST_H
  3. #include <afxmt.h>
  4. #ifndef CPPUNIT_TESTDECORATOR_H
  5. #include "TestDecorator.h"
  6. #endif
  7. /* A Microsoft-specific active test
  8.  *
  9.  * An active test manages its own
  10.  * thread of execution.  This one 
  11.  * is very simple and only sufficient
  12.  * for the limited use we put it through
  13.  * in the TestRunner.  It spawns a thread
  14.  * on run (TestResult *) and signals
  15.  * completion of the test.
  16.  *
  17.  * We assume that only one thread 
  18.  * will be active at once for each
  19.  * instance.
  20.  *
  21.  */
  22. class ActiveTest : public TestDecorator
  23. {
  24. public:
  25.                     ActiveTest (Test *test);
  26.                     ~ActiveTest ();
  27.     void            run (TestResult *result);
  28. protected:
  29.     HANDLE          m_threadHandle;
  30.     CEvent          m_runCompleted;
  31.     TestResult      *m_currentTestResult;
  32.     void            run ();
  33.     void            setTestResult (TestResult *result);
  34.     static UINT     threadFunction (LPVOID thisInstance);
  35. };
  36. // Construct the active test
  37. inline ActiveTest::ActiveTest (Test *test)
  38. : TestDecorator (test), m_runCompleted () 
  39. { m_currentTestResult = NULL; m_threadHandle = INVALID_HANDLE_VALUE; }
  40. // Pend until the test has completed
  41. inline ActiveTest::~ActiveTest ()
  42. { CSingleLock (&m_runCompleted, TRUE); }
  43. // Set the test result that we are to run
  44. inline void ActiveTest::setTestResult (TestResult *result)
  45. { m_currentTestResult = result; }
  46. // Run our test result
  47. inline void ActiveTest::run ()
  48. { TestDecorator::run (m_currentTestResult); }
  49. #endif