#include #include #include using namespace XCEngine::Threading; namespace { class TestTask : public ITask { public: TestTask(bool* flag) : m_flag(flag) {} void Execute() override { if (m_flag) *m_flag = true; } private: bool* m_flag; }; TEST(Threading_Task, DefaultPriority) { TestTask task(nullptr); EXPECT_EQ(task.GetPriority(), TaskPriority::Normal); } TEST(Threading_Task, SetPriority) { TestTask task(nullptr); task.SetPriority(TaskPriority::High); EXPECT_EQ(task.GetPriority(), TaskPriority::High); } TEST(Threading_Task, Status) { TestTask task(nullptr); EXPECT_EQ(task.GetStatus(), TaskStatus::Pending); task.SetStatus(TaskStatus::Running); EXPECT_EQ(task.GetStatus(), TaskStatus::Running); } TEST(Threading_Task, Execute) { bool executed = false; TestTask task(&executed); task.Execute(); EXPECT_TRUE(executed); } TEST(Threading_LambdaTask, Execute) { bool executed = false; LambdaTask task([&executed]() { executed = true; }); task.Execute(); EXPECT_TRUE(executed); } TEST(Threading_LambdaTask, Priority) { LambdaTask task([]() {}, TaskPriority::Low); EXPECT_EQ(task.GetPriority(), TaskPriority::Low); } } // namespace