1//------------------------------------------------------------------------------ 2// LockLooperWithTimeoutTest.cpp 3// 4//------------------------------------------------------------------------------ 5 6// Standard Includes ----------------------------------------------------------- 7 8// System Includes ------------------------------------------------------------- 9#include <Looper.h> 10 11// Project Includes ------------------------------------------------------------ 12 13// Local Includes -------------------------------------------------------------- 14#include "LockLooperWithTimeoutTest.h" 15#include "LockLooperTestCommon.h" 16 17// Local Defines --------------------------------------------------------------- 18 19// Globals --------------------------------------------------------------------- 20 21//------------------------------------------------------------------------------ 22/** 23 LockLooperWithTimeout(bigtime_t timeout) 24 @case handler has no looper 25 @param timeout 10000 microseconds (not relevant) 26 @results Returns B_BAD_VALUE 27 */ 28void TLockLooperWithTimeoutTest::LockLooperWithTimeout1() 29{ 30 BHandler Handler; 31 CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_BAD_VALUE); 32} 33//------------------------------------------------------------------------------ 34/** 35 LockLooperWithTimeout(bigtime_t timeout) 36 @case handler has a looper which is initially unlocked 37 @param timeout 10000 microseconds (not relevant) 38 @results Returns B_OK 39 */ 40void TLockLooperWithTimeoutTest::LockLooperWithTimeout2() 41{ 42 BLooper Looper; 43 BHandler Handler; 44 Looper.AddHandler(&Handler); 45 if (Looper.IsLocked()) 46 { 47 // Make sure the looper is unlocked 48 Looper.Unlock(); 49 } 50 CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_OK); 51} 52//------------------------------------------------------------------------------ 53/** 54 LockLooperWithTimeout(bigtime_t timeout) 55 @case handler has a looper which is initially locked 56 @param timeout 10000 microseconds (not relevant) 57 @results Returns B_OK 58 */ 59void TLockLooperWithTimeoutTest::LockLooperWithTimeout3() 60{ 61 BLooper Looper; 62 BHandler Handler; 63 Looper.AddHandler(&Handler); 64 Looper.Lock(); 65 CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_OK); 66} 67//------------------------------------------------------------------------------ 68/** 69 LockLooperWithTimeout(bigtime_t timeout) 70 @case handler has a looper which is locked in another thread 71 @param timeout 10000 microseconds (not relevant) 72 @results Returns B_TIMED_OUT 73 */ 74void TLockLooperWithTimeoutTest::LockLooperWithTimeout4() 75{ 76 BLooper Looper; 77 BHandler Handler; 78 Looper.AddHandler(&Handler); 79 if (Looper.IsLocked()) 80 { 81 Looper.Unlock(); 82 } 83 84 TLockLooperInfo info(&Looper); 85 thread_id tid = spawn_thread(LockLooperThreadFunc, "LockLooperHelperThread", 86 B_NORMAL_PRIORITY, (void*)&info); 87 resume_thread(tid); 88 info.LockTest(); 89 90 CPPUNIT_ASSERT(Handler.LockLooperWithTimeout(10000) == B_TIMED_OUT); 91 info.UnlockThread(); 92} 93//------------------------------------------------------------------------------ 94Test* TLockLooperWithTimeoutTest::Suite() 95{ 96 TestSuite* SuiteOfTests = new TestSuite("BHandler::LockLooperWithTimeout"); 97 98 ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout1); 99 ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout2); 100 ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout3); 101// ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout4); 102 103 return SuiteOfTests; 104} 105//------------------------------------------------------------------------------ 106 107/* 108 * $Log $ 109 * 110 * $Id $ 111 * 112 */ 113 114 115