1 |
#include "MutexTest.h" |
2 |
|
3 |
#include <iostream> |
4 |
|
5 |
CPPUNIT_TEST_SUITE_REGISTRATION(MutexTest); |
6 |
|
7 |
|
8 |
// ConcurrentThread |
9 |
|
10 |
MutexTest::ConcurrentThread::ConcurrentThread() : Thread(false, 0, -4) { |
11 |
resource = 0; |
12 |
} |
13 |
|
14 |
int MutexTest::ConcurrentThread::Main() { |
15 |
mutex.Lock(); |
16 |
resource++; |
17 |
mutex.Unlock(); |
18 |
} |
19 |
|
20 |
|
21 |
// MutexTest |
22 |
|
23 |
void MutexTest::setUp() { |
24 |
} |
25 |
|
26 |
void MutexTest::tearDown() { |
27 |
} |
28 |
|
29 |
void MutexTest::testLockAndUnlockBySingleThread() { |
30 |
ConcurrentThread t; |
31 |
t.StartThread(); |
32 |
usleep(200000); // wait 200ms |
33 |
CPPUNIT_ASSERT(t.resource == 1); |
34 |
} |
35 |
|
36 |
void MutexTest::testLock() { |
37 |
ConcurrentThread t; |
38 |
t.mutex.Lock(); |
39 |
t.SignalStartThread(); |
40 |
usleep(400000); // wait 400ms |
41 |
CPPUNIT_ASSERT(t.resource == 0); |
42 |
t.mutex.Unlock(); |
43 |
} |
44 |
|
45 |
void MutexTest::testUnlock() { |
46 |
CPPUNIT_ASSERT(true); |
47 |
} |
48 |
|
49 |
void MutexTest::testDoubleLock() { |
50 |
CPPUNIT_ASSERT(true); |
51 |
} |