threadable.cpp
Go to the documentation of this file.
1 
8 /*****************************************************************************
9 ** Platform Check
10 *****************************************************************************/
11 
12 #include <iostream>
13 #include <ecl/config/ecl.hpp>
14 #if defined(ECL_IS_POSIX)
15 
16 /*****************************************************************************
17 ** Includes
18 *****************************************************************************/
19 
20 #include <iostream>
21 #include <gtest/gtest.h>
22 #include <ecl/config/ecl.hpp>
24 #include "../../include/ecl/threads/threadable.hpp"
25 
26 /*****************************************************************************
27 ** Doxygen
28 *****************************************************************************/
32 /*****************************************************************************
33 ** Using
34 *****************************************************************************/
35 
37 using ecl::Threadable;
38 
39 /*****************************************************************************
40 ** Namespaces
41 *****************************************************************************/
42 
43 namespace ecl {
44 namespace threads {
45 namespace tests {
46 
47 /*****************************************************************************
48 ** Classes
49 *****************************************************************************/
50 
51 class AThreadable : public Threadable {
52 public:
53  AThreadable(const unsigned int countdown_start = 5) : top(countdown_start) {}
54 
55  void runnable() {
56  for ( unsigned int i = top; i > 0; --i ) {
57 // std::cout << "Counting down...." << i << std::endl;
58  sleep(1);
59  }
60  }
61 
62 private:
63  unsigned int top;
64 };
65 
66 } // namespace tests
67 } // namespace threads
68 } // namespace ecl
69 
70 /*****************************************************************************
71 ** Using
72 *****************************************************************************/
73 
74 using ecl::threads::tests::AThreadable;
75 
76 /*****************************************************************************
77 ** Doxygen
78 *****************************************************************************/
79 
84 /*****************************************************************************
85 ** Tests
86 *****************************************************************************/
87 
88 TEST(ThreadableTests,runTest) {
89  AThreadable a;
90 
91  a.start();
92  while ( a.isRunning() ) {
93  sleep(1);
94  }
95  SUCCEED();
96 }
97 
98 /*****************************************************************************
99 ** Main program
100 *****************************************************************************/
101 
102 int main(int argc, char **argv) {
103 
104  testing::InitGoogleTest(&argc,argv);
105  return RUN_ALL_TESTS();
106 }
107 
108 
109 #else
110 
111 /*****************************************************************************
112 ** Alternative main
113 *****************************************************************************/
114 
115 int main(int argc, char **argv) {
116 
117  std::cout << "Currently not supported on your platform." << std::endl;
118 }
119 
120 #endif /* ECL_IS_POSIX */
121 
TEST
TEST(TypeTests, fundamentals)
main
int main(int argc, char **argv)
Definition: threadable.cpp:115
ecl::StandardException
standard_exception.hpp
ecl
Embedded control libraries.


ecl_threads
Author(s): Daniel Stonier
autogenerated on Wed Mar 2 2022 00:16:43