ref: a34fd091a24c1caf41189d3179a05c15df16b6fc
dir: /test/common/WelsTaskListTest.cpp/
#include <gtest/gtest.h> #include <string.h> #include <string> #include <list> #include <map> #include "typedefs.h" #include "WelsList.h" #include "WelsTask.h" #include "WelsThreadPoolTest.h" TEST (CThreadPoolTest, CThreadPoolTest_List) { CWelsList<IWelsTask>* pTaskList; pTaskList = new CWelsList<IWelsTask>(); ASSERT_TRUE(NULL != pTaskList); CThreadPoolTest cThreadPoolTest; CThreadPoolTest cThreadPoolTest1; CSimpleTask* aTasks[2]; IWelsTask* pCurTask; int32_t i; aTasks[0] = new CSimpleTask (&cThreadPoolTest); aTasks[1] = new CSimpleTask (&cThreadPoolTest1); pTaskList->push_back(aTasks[0]); pTaskList->push_back(aTasks[1]); EXPECT_TRUE(2 == pTaskList->size()); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest pTaskList->pop_front(); EXPECT_TRUE(1 == pTaskList->size()); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest1); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest1 pTaskList->pop_front(); pTaskList->push_back(aTasks[1]); EXPECT_TRUE(1 == pTaskList->size()); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest1); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest1 pTaskList->pop_front(); EXPECT_TRUE(1 == cThreadPoolTest.GetTaskCount()); EXPECT_TRUE(2 == cThreadPoolTest1.GetTaskCount()); EXPECT_TRUE(0 == pTaskList->size()); for (i = 0; i < 2; i++) { delete aTasks[i]; } aTasks[0] = new CSimpleTask (&cThreadPoolTest1); aTasks[1] = new CSimpleTask (&cThreadPoolTest); pTaskList->push_back(aTasks[0]); pTaskList->push_back(aTasks[1]); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest1); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest1:3 pTaskList->pop_front(); EXPECT_TRUE(1 == pTaskList->size()); pTaskList->push_back(aTasks[0]); EXPECT_TRUE(2 == pTaskList->size()); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest:2 pTaskList->pop_front(); pCurTask = pTaskList->begin(); EXPECT_TRUE(pCurTask->GetSink() == &cThreadPoolTest1); pCurTask->GetSink()->OnTaskExecuted();//cThreadPoolTest1:4 pTaskList->pop_front(); EXPECT_TRUE(2 == cThreadPoolTest.GetTaskCount()); EXPECT_TRUE(4 == cThreadPoolTest1.GetTaskCount()); delete pTaskList; }