JD2022-TU1/main/unittests/core/taskmanager/PromiseTaskWrapper.cpp

86 lines
2.1 KiB
C++

#include "precompiled_unittests_core.h"
#include <core/taskmanager/PromiseTaskWrapper.h>
#include <core/taskmanager/TaskManager.h>
#include <engine/singleton/Singletons.h>
namespace ITF
{
class BasicTestTask: public PromiseBasedTask<int, int>
{
virtual ~BasicTestTask() {}
virtual void start(Promise<int, int> *_promise) override
{
_promise->resolve(42);
}
};
class ForwardingTestTask: public PromiseBasedTask<int, int>
{
virtual ~ForwardingTestTask() {}
virtual void start(Promise<int, int> *_promise) override
{
m_promise = _promise;
PromiseTaskWrapper<int, int>::startTask("Task!", new BasicTestTask)
.registerSuccessHandler(this, &ForwardingTestTask::onSuccess)
.registerFailureHandler(this, &ForwardingTestTask::onFailure);
}
void onSuccess(const int &_result)
{
m_promise->resolve(_result);
}
void onFailure(const int &_error)
{
m_promise->reject(_error);
}
Promise<int, int> *m_promise;
};
class ClientMock
{
public:
MOCK_METHOD1(onSuccess, void(const int &_result));
MOCK_METHOD1(onFailure, void(const int &_error));
};
// These tests crash because of uninitialized global state (argh)
/*TEST(PromiseTaskWrapper, BasicTaskSuccess)
{
Singletons::init();
TaskManager::createInstance();
testing::StrictMock<ClientMock> client;
PromiseTaskWrapper<int, int>::startTask("Task!", new BasicTestTask)
.registerSuccessHandler<testing::StrictMock<ClientMock> >(&client, &ClientMock::onSuccess);
EXPECT_CALL(client, onSuccess(42)).Times(1);
TaskManager::destroyInstance();
Singletons::get().destroy();
}
TEST(PromiseTaskWrapper, BasicTaskFailure)
{
Singletons::init();
TaskManager::createInstance();
testing::StrictMock<ClientMock> client;
PromiseTaskWrapper<int, int>::startTask("Task!", new BasicTestTask)
.registerFailureHandler<testing::StrictMock<ClientMock> >(&client, &ClientMock::onFailure);
EXPECT_CALL(client, onFailure(42)).Times(1);
TaskManager::destroyInstance();
Singletons::get().destroy();
}*/
}