fix tests

This commit is contained in:
Andrei Yankovich 2021-10-12 11:36:26 +03:00
parent 32a5d74208
commit 7d2490abb3

View File

@ -12,10 +12,11 @@
#include "abstracttask.h" #include "abstracttask.h"
#include "ctime" #include "ctime"
#include <QTest> #include <QTest>
#include <QDateTime>
#include <cmath>
class ShedullerestNode: public QH::AbstractNode { class ShedullerestNode: public QH::AbstractNode {
public: public:
int executedTime = 0; quint64 executedTime = 0;
}; };
@ -26,7 +27,7 @@ class TestTask: public QH::AbstractTask {
public: public:
bool execute(QH::AbstractNode *node) const override { bool execute(QH::AbstractNode *node) const override {
static_cast<ShedullerestNode*>(node)->executedTime = ::time(0); static_cast<ShedullerestNode*>(node)->executedTime = QDateTime::currentMSecsSinceEpoch();
return true; return true;
}; };
@ -51,10 +52,11 @@ void ShedullerTest::testSingleMode() {
task->setMode(QH::SheduleMode::SingleWork); task->setMode(QH::SheduleMode::SingleWork);
task->setTime(2); task->setTime(2);
int ct = time(0); quint64 ct = QDateTime::currentMSecsSinceEpoch();
node->sheduleTask(task); node->sheduleTask(task);
QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME)); QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME));
QVERIFY(node->executedTime == (ct + 2)); int diff = std::abs(static_cast<long long>(node->executedTime - (ct + 2000)));
QVERIFY(diff < 1000);
node->executedTime = 0; node->executedTime = 0;
QVERIFY(node->sheduledTaskCount() == 0); QVERIFY(node->sheduledTaskCount() == 0);
@ -65,19 +67,24 @@ void ShedullerTest::testSingleMode() {
void ShedullerTest::testRepeatMode() { void ShedullerTest::testRepeatMode() {
ShedullerestNode *node = new ShedullerestNode(); ShedullerestNode *node = new ShedullerestNode();
auto task = QSharedPointer<TestTask>::create(); auto task = QSharedPointer<TestTask>::create();
task->setTime(2);
task->setMode(QH::SheduleMode::Repeat); task->setMode(QH::SheduleMode::Repeat);
int ct = time(0); quint64 ct = QDateTime::currentMSecsSinceEpoch();
node->sheduleTask(task); node->sheduleTask(task);
QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME)); QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME));
QVERIFY(node->executedTime = (ct + 2));
int diff = std::abs(static_cast<long long>(node->executedTime - (ct + 2000)));
QVERIFY(diff < 1000);
node->executedTime = 0; node->executedTime = 0;
QVERIFY(node->sheduledTaskCount() == 1); QVERIFY(node->sheduledTaskCount() == 1);
QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME)); QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME));
QVERIFY(node->executedTime == (ct + 4)); diff = std::abs(static_cast<long long>(node->executedTime - (ct + 4000)));
QVERIFY(diff < 1000);
QVERIFY(node->sheduledTaskCount() == 1); QVERIFY(node->sheduledTaskCount() == 1);
node->removeTask(task->taskId()); node->removeTask(task->taskId());
@ -93,13 +100,15 @@ void ShedullerTest::testTimePointMode() {
auto task = QSharedPointer<TestTask>::create(); auto task = QSharedPointer<TestTask>::create();
task->setMode(QH::SheduleMode::TimePoint); task->setMode(QH::SheduleMode::TimePoint);
int requestTime = time(0) + 2;
int requestTime = time(0) + 5;
task->setTime(requestTime); task->setTime(requestTime);
node->sheduleTask(task); node->sheduleTask(task);
QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME)); QVERIFY(wait([&node](){return node->executedTime;}, WAIT_TIME));
int diff = std::abs(static_cast<long long>(node->executedTime - requestTime * 1000));
QVERIFY(node->executedTime == requestTime); QVERIFY(diff < 1000);
QVERIFY(node->sheduledTaskCount() == 0); QVERIFY(node->sheduledTaskCount() == 0);
node->softDelete(); node->softDelete();