threadable.cpp
Go to the documentation of this file.
00001 
00008 /*****************************************************************************
00009 ** Platform Check
00010 *****************************************************************************/
00011 
00012 #include <iostream>
00013 #include <ecl/config/ecl.hpp>
00014 #if defined(ECL_IS_POSIX)
00015 
00016 /*****************************************************************************
00017 ** Includes
00018 *****************************************************************************/
00019 
00020 #include <iostream>
00021 #include <gtest/gtest.h>
00022 #include <ecl/config/ecl.hpp>
00023 #include <ecl/exceptions/standard_exception.hpp>
00024 #include "../../include/ecl/threads/threadable.hpp"
00025 
00026 /*****************************************************************************
00027 ** Doxygen
00028 *****************************************************************************/
00032 /*****************************************************************************
00033 ** Using
00034 *****************************************************************************/
00035 
00036 using ecl::StandardException;
00037 using ecl::Threadable;
00038 
00039 /*****************************************************************************
00040 ** Namespaces
00041 *****************************************************************************/
00042 
00043 namespace ecl {
00044 namespace threads {
00045 namespace tests {
00046 
00047 /*****************************************************************************
00048 ** Classes
00049 *****************************************************************************/
00050 
00051 class AThreadable : public Threadable {
00052 public:
00053         AThreadable(const unsigned int countdown_start = 5) : top(countdown_start) {}
00054 
00055         void runnable() {
00056                 for ( unsigned int i = top; i > 0; --i ) {
00057 //                      std::cout << "Counting down...." << i << std::endl;
00058                         sleep(1);
00059                 }
00060         }
00061 
00062 private:
00063         unsigned int top;
00064 };
00065 
00066 } // namespace tests
00067 } // namespace threads
00068 } // namespace ecl
00069 
00070 /*****************************************************************************
00071 ** Using
00072 *****************************************************************************/
00073 
00074 using ecl::threads::tests::AThreadable;
00075 
00076 /*****************************************************************************
00077 ** Doxygen
00078 *****************************************************************************/
00079 
00084 /*****************************************************************************
00085 ** Tests
00086 *****************************************************************************/
00087 
00088 TEST(ThreadableTests,runTest) {
00089     AThreadable a;
00090 
00091     a.start();
00092     while ( a.isRunning() ) {
00093         sleep(1);
00094     }
00095     SUCCEED();
00096 }
00097 
00098 /*****************************************************************************
00099 ** Main program
00100 *****************************************************************************/
00101 
00102 int main(int argc, char **argv) {
00103 
00104     testing::InitGoogleTest(&argc,argv);
00105     return RUN_ALL_TESTS();
00106 }
00107 
00108 
00109 #else
00110 
00111 /*****************************************************************************
00112 ** Alternative main
00113 *****************************************************************************/
00114 
00115 int main(int argc, char **argv) {
00116 
00117         std::cout << "Currently not supported on your platform." << std::endl;
00118 }
00119 
00120 #endif /* ECL_IS_POSIX */
00121 


ecl_threads
Author(s): Daniel Stonier
autogenerated on Sun Oct 5 2014 23:35:37