11using namespace Microsoft::VisualStudio::CppUnitTestFramework;
18 TEST_CLASS_INITIALIZE (ClassInitialize)
20 Logger::WriteMessage (
"EventTest class initialize.\n");
23 TEST_CLASS_CLEANUP (ClassCleanup)
25 Logger::WriteMessage (
"EventTest class cleanup.\n");
28 TEST_METHOD_INITIALIZE (MethodInitialize)
30 Logger::WriteMessage (
"EventTest method initialize.\n");
33 TEST_METHOD_CLEANUP (MethodCleanup)
35 Logger::WriteMessage (
"EventTest method cleanup.\n");
38 TEST_METHOD (AutoEventTest)
40 auto EventFunction = [](LPVOID lpvParam)->DWORD
46 ret =
event.
Create (_T (
"AutoEventTest"), FALSE, TRUE);
48 for (
int i = 0; i < 10; i++)
51 Assert::IsTrue (ret, _T (
"Event::PulseEvent() failed.\n"));
52 Logger::WriteMessage (_T (
"PulseFunction() Event pulsed.\n"));
59 auto RecvFunction = [](LPVOID lpvParam)->DWORD
64 BOOL ret =
event.Open (_T (
"AutoEventTest"));
66 for (
int i = 0; i < 10; i++)
68 ret =
event.
Wait (10000);
69 if (ret == WAIT_ABANDONED_0 || ret == WAIT_FAILED || ret == WAIT_TIMEOUT)
break;
70 if (ret == WAIT_OBJECT_0)
73 message.
Format (_T (
"Event::Wait() wait breaked. ThreadID=%d\n"),::GetThreadId(thread->
GetHandle()));
74 Logger::WriteMessage (message.
Ctr());
86 Assert::IsTrue (EventThread.
Create (EventFunction, &EventThread), _T (
"Failed to create PulseThread.\n"));
87 Assert::IsTrue (RecvThread1.
Create (RecvFunction, &RecvThread1), _T (
"Failed to create RecvThread1.\n"));
88 Assert::IsTrue (RecvThread2.
Create (RecvFunction, &RecvThread2), _T (
"Failed to create RecvThread2.\n"));
89 Assert::IsTrue (RecvThread3.
Create (RecvFunction, &RecvThread3), _T (
"Failed to create RecvThread3.\n"));
94 TEST_METHOD (ManualEventTest)
96 auto EventFunction = [](LPVOID lpvParam)->DWORD
102 ret =
event.
Create (_T (
"ManualEventTest"), TRUE, FALSE);
104 for (
int i = 0; i < 10; i++)
107 Logger::WriteMessage (_T (
"Event::Set()\n"));
108 Assert::IsTrue (ret, _T (
"Event::SetEvent() failed.\n"));
112 ret =
event.Reset ();
113 Logger::WriteMessage (_T (
"Event::Reset()\n"));
114 Assert::IsTrue (ret, _T (
"Event::ResetEvent() failed.\n"));
122 auto RecvFunction = [](LPVOID lpvParam)->DWORD
127 BOOL ret =
event.Open (_T (
"ManualEventTest"));
131 ret =
event.
Wait (1000);
132 if (ret == WAIT_ABANDONED_0 || ret == WAIT_FAILED)
break;
134 if (ret == WAIT_OBJECT_0)
137 message.
Format (_T (
"Event::Wait() wait breaked. ThreadID=%d\n"),::GetThreadId(thread->
GetHandle()));
138 Logger::WriteMessage (message.
Ctr());
140 if (ret == WAIT_TIMEOUT)
143 message.
Format (_T (
"Event::Wait() wait timeout. ThreadID=%d\n"),::GetThreadId(thread->
GetHandle()));
144 Logger::WriteMessage (message.
Ctr());
158 Assert::IsTrue (EventThread.
Create (EventFunction, &EventThread), _T (
"Failed to create EventThread.\n"));
159 Assert::IsTrue (RecvThread1.
Create (RecvFunction, &RecvThread1), _T (
"Failed to create RecvThread1.\n"));
160 Assert::IsTrue (RecvThread2.
Create (RecvFunction, &RecvThread2), _T (
"Failed to create RecvThread2.\n"));
161 Assert::IsTrue (RecvThread3.
Create (RecvFunction, &RecvThread3), _T (
"Failed to create RecvThread3.\n"));
イベントに関するWindowsAPIを集約したクラス
文字列に関するWindowsAPIを集約したクラス
スレッドに関するWindowsAPIを集約したクラス
イベントに関するWindowsAPIを集約したクラス
HANDLE APIENTRY GetHandle() const
継承先はこの関数でハンドルを取得します。
文字列に関するWindowsAPIを集約したクラス
TString &APIENTRY Format(LPCTSTR format,...)
フォーマットに従ってパラメータを文字列化します。
LPCTSTR APIENTRY Ctr() const
内部で確保している文字列ポインタを取得します。
スレッドに関するWindowsAPIを集約したクラス
BOOL APIENTRY Create(PTHREAD_START_ROUTINE function=NULL, LPVOID lpvParam=NULL, DWORD dwCreationFlag=0)
スレッドを作成します。
DWORD APIENTRY Wait(DWORD dwWaitTime=INFINITE) const
シグナル状態になるとブロックを解除します。