void TestThreadTerminate(void) { // Test terminating a thread SCXCoreLib::SCXHandle<SCXCoreLib::SCXThread> thread = GivenARunningThread(); CPPUNIT_ASSERT_NO_THROW(thread->RequestTerminate()); time_t later = time(NULL) + 10; while (thread->IsAlive() && later > time(NULL)) SCXCoreLib::SCXThread::Sleep(10); CPPUNIT_ASSERT_MESSAGE("Thread did not terminate", ! thread->IsAlive()); // terminate again CPPUNIT_ASSERT_NO_THROW(thread->RequestTerminate()); }