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