v8  3.14.5(node0.10.28)
V8 is Google's open source JavaScript engine
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
test-lock.cc
Go to the documentation of this file.
1 // Copyright 2006-2008 the V8 project authors. All rights reserved.
2 //
3 // Tests of the TokenLock class from lock.h
4 
5 #include <stdlib.h>
6 
7 #include "v8.h"
8 
9 #include "platform.h"
10 #include "cctest.h"
11 
12 
13 using namespace ::v8::internal;
14 
15 
16 // Simple test of locking logic
17 TEST(Simple) {
18  Mutex* mutex = OS::CreateMutex();
19  CHECK_EQ(0, mutex->Lock()); // acquire the lock with the right token
20  CHECK_EQ(0, mutex->Unlock()); // can unlock with the right token
21  delete mutex;
22 }
23 
24 
25 TEST(MultiLock) {
26  Mutex* mutex = OS::CreateMutex();
27  CHECK_EQ(0, mutex->Lock());
28  CHECK_EQ(0, mutex->Unlock());
29  delete mutex;
30 }
31 
32 
33 TEST(ShallowLock) {
34  Mutex* mutex = OS::CreateMutex();
35  CHECK_EQ(0, mutex->Lock());
36  CHECK_EQ(0, mutex->Unlock());
37  CHECK_EQ(0, mutex->Lock());
38  CHECK_EQ(0, mutex->Unlock());
39  delete mutex;
40 }
41 
42 
43 TEST(SemaphoreTimeout) {
44  bool ok;
45  Semaphore* sem = OS::CreateSemaphore(0);
46 
47  // Semaphore not signalled - timeout.
48  ok = sem->Wait(0);
49  CHECK(!ok);
50  ok = sem->Wait(100);
51  CHECK(!ok);
52  ok = sem->Wait(1000);
53  CHECK(!ok);
54 
55  // Semaphore signalled - no timeout.
56  sem->Signal();
57  ok = sem->Wait(0);
58  sem->Signal();
59  ok = sem->Wait(100);
60  sem->Signal();
61  ok = sem->Wait(1000);
62  CHECK(ok);
63  delete sem;
64 }
#define CHECK_EQ(expected, value)
Definition: checks.h:219
#define CHECK(condition)
Definition: checks.h:56
TEST(Simple)
Definition: test-lock.cc:17