Main Page
Namespaces
Namespace List
Namespace Members
All
Enumerations
Enumerator
Classes
Class List
Class Members
All
Functions
Variables
Typedefs
Files
File List
File Members
All
Functions
Variables
Macros
src
test
test/mutex.cpp
Go to the documentation of this file.
1
11
/*****************************************************************************
12
** Platform Check
13
*****************************************************************************/
14
#include <iostream>
15
#include <ecl/config/ecl.hpp>
16
#if defined(ECL_IS_POSIX)
17
18
/*****************************************************************************
19
** Includes
20
*****************************************************************************/
21
22
#include <iostream>
23
#include <gtest/gtest.h>
24
#include <ecl/config/ecl.hpp>
25
#include <
ecl/exceptions/standard_exception.hpp
>
26
#include <
ecl/time/timestamp.hpp
>
27
#include "../../include/ecl/threads/mutex.hpp"
28
29
/*****************************************************************************
30
** Using
31
*****************************************************************************/
32
33
using
ecl::StandardException
;
34
using
ecl::Mutex;
35
using
ecl::Duration
;
36
37
/*****************************************************************************
38
** TESTS
39
*****************************************************************************/
40
41
TEST
(MutexTests,selfDestruct)
42
{
43
#if defined(NDEBUG) || defined(ECL_NDEBUG)
44
std::cout <<
"Skipping deadlock tests - posix doesn't help you in release mode."
<< std::endl;
45
SUCCEED();
46
#else
47
// It will now attempt to self-destruct while locked and throw an exception.
48
// This behaviour is only provided by posix in debug mode.
49
Mutex
mutex
;
50
mutex
.lock();
51
try
{
52
mutex
.lock();
53
}
catch
(StandardException &e) {
54
SUCCEED();
55
}
56
mutex
.unlock();
57
#endif
58
}
59
60
TEST
(MutexTests,tryLock)
61
{
62
// It will now attempt to self-destruct while locked and throw an exception.
63
Mutex
mutex
;
64
mutex
.trylock();
65
EXPECT_FALSE(
mutex
.trylock());
66
mutex
.unlock();
67
}
68
69
TEST
(MutexTests,timedLock)
70
{
71
// It will now attempt to self-destruct while locked and throw an exception.
72
// Trying to activate from the same thread will cause a deadlock
73
// and thus exception. Need to make a test with different threads here.
74
// Duration duration(1,500000000);
75
// Mutex mutex;
76
// mutex.lock();
77
// mutex.timedlock(duration);
78
}
79
80
/*****************************************************************************
81
** Main program
82
*****************************************************************************/
83
84
int
main
(
int
argc,
char
**argv)
85
{
86
87
testing::InitGoogleTest(&argc, argv);
88
return
RUN_ALL_TESTS();
89
}
90
91
#else
92
93
/*****************************************************************************
94
** Alternative main
95
*****************************************************************************/
96
97
int
main
(
int
argc,
char
**argv)
98
{
99
100
std::cout <<
"Currently not supported on your platform."
<< std::endl;
101
}
102
103
#endif
/* ECL_IS_POSIX */
TEST
TEST(TypeTests, fundamentals)
main
int main(int argc, char **argv)
Definition:
test/mutex.cpp:97
ecl::StandardException
mutex
ecl::Mutex mutex
Definition:
examples/mutex.cpp:25
ecl::Duration
TimeStamp Duration
standard_exception.hpp
timestamp.hpp
ecl_threads
Author(s): Daniel Stonier
autogenerated on Wed Mar 2 2022 00:16:43