86 lines
2.1 KiB
C++
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();
|
|
}*/
|
|
|
|
}
|