Files
oak-editor/tests/gtest/task_taskmanager_test.cpp
T
2026-01-05 02:55:21 +08:00

53 lines
879 B
C++

#include <gtest/gtest.h>
#include <QEventLoop>
#include <QTimer>
#include "task/taskmanager.h"
namespace {
class DummyTask final : public olive::Task {
public:
explicit DummyTask(bool *ran)
: ran_(ran)
{
SetTitle(QStringLiteral("DummyTask"));
}
protected:
bool Run() override
{
if (ran_) {
*ran_ = true;
}
return true;
}
private:
bool *ran_ = nullptr;
};
}
TEST(TaskManager, AddAndRunTask)
{
olive::TaskManager::CreateInstance();
olive::TaskManager *mgr = olive::TaskManager::instance();
ASSERT_NE(mgr, nullptr);
bool ran = false;
DummyTask *task = new DummyTask(&ran);
QEventLoop loop;
QObject::connect(task, &olive::Task::Finished, &loop, [&loop](olive::Task *, bool) {
loop.quit();
});
mgr->AddTask(task);
QTimer::singleShot(5000, &loop, &QEventLoop::quit);
loop.exec();
EXPECT_TRUE(ran);
olive::TaskManager::DestroyInstance();
}