add non overlaping weekly calendar item tests
This commit is contained in:
parent
d01ee95ecc
commit
eceb277f02
@ -103,8 +103,6 @@ bool CalendarItem::isValid() const
|
|||||||
/*! Returns true, if the given \a dateTime matches this \l{CalendarItem}. */
|
/*! Returns true, if the given \a dateTime matches this \l{CalendarItem}. */
|
||||||
bool CalendarItem::evaluate(const QDateTime &dateTime) const
|
bool CalendarItem::evaluate(const QDateTime &dateTime) const
|
||||||
{
|
{
|
||||||
qCDebug(dcRuleEngine()) << "Evaluate CalendarItem";
|
|
||||||
|
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -184,7 +182,7 @@ bool CalendarItem::evaluateWeekly(const QDateTime &dateTime) const
|
|||||||
|
|
||||||
// Check each week day in the list
|
// Check each week day in the list
|
||||||
foreach (const int &weekDay, repeatingOption().weekDays()) {
|
foreach (const int &weekDay, repeatingOption().weekDays()) {
|
||||||
QDateTime startDateTime = weekStartDateTime.addDays(weekDay -1);
|
QDateTime startDateTime = weekStartDateTime.addDays(weekDay);
|
||||||
QDateTime endDateTime = startDateTime.addSecs(duration() * 60);
|
QDateTime endDateTime = startDateTime.addSecs(duration() * 60);
|
||||||
|
|
||||||
bool overlapping = false;
|
bool overlapping = false;
|
||||||
|
|||||||
@ -397,142 +397,131 @@ void TestTimeManager::testCalendarItemDaily()
|
|||||||
|
|
||||||
void TestTimeManager::testCalendarItemWeekly_data()
|
void TestTimeManager::testCalendarItemWeekly_data()
|
||||||
{
|
{
|
||||||
// QVariantMap repeatingOptionDaily;
|
QVariantMap repeatingOptionWeekly;
|
||||||
// repeatingOptionDaily.insert("mode", "RepeatingModeDaily");
|
repeatingOptionWeekly.insert("mode", "RepeatingModeWeekly");
|
||||||
|
repeatingOptionWeekly.insert("weekDays", QVariantList() << 2 << 4 << 6);
|
||||||
|
|
||||||
// QVariantMap repeatingOptionDailyWeekDays;
|
QVariantMap repeatingOptionWeeklyOverlapping;
|
||||||
// repeatingOptionDailyWeekDays.insert("mode", "RepeatingModeDaily");
|
repeatingOptionWeeklyOverlapping.insert("mode", "RepeatingModeWeekly");
|
||||||
// repeatingOptionDailyWeekDays.insert("weekDays", QVariantList() << 1 << 4 << 7);
|
repeatingOptionWeeklyOverlapping.insert("weekDays", QVariantList() << 2 << 4 << 7);
|
||||||
|
|
||||||
// QTest::addColumn<QVariantMap>("timeDescriptor");
|
QTest::addColumn<QVariantMap>("timeDescriptor");
|
||||||
// QTest::addColumn<QString>("time");
|
QTest::addColumn<QVariantMap>("repeatingOption");
|
||||||
// QTest::addColumn<int>("duration");
|
QTest::addColumn<QString>("time");
|
||||||
|
|
||||||
// QTest::newRow("daily") << createTimeDescriptorCalendar(createCalendarItem("06:55", 10, repeatingOptionDaily)) << "06:55" << 10;
|
|
||||||
// QTest::newRow("daily jump date") << createTimeDescriptorCalendar(createCalendarItem("23:55", 10, repeatingOptionDaily)) << "23:55" << 10;
|
|
||||||
|
|
||||||
|
QTest::newRow("weekly") << createTimeDescriptorCalendar(createCalendarItem("06:55", 10, repeatingOptionWeekly)) << repeatingOptionWeekly << "06:55";
|
||||||
|
//QTest::newRow("weekly overlapping") << createTimeDescriptorCalendar(createCalendarItem("23:55", 10, repeatingOptionWeeklyOverlapping)) << repeatingOptionWeeklyOverlapping << "23:55";
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestTimeManager::testCalendarItemWeekly()
|
void TestTimeManager::testCalendarItemWeekly()
|
||||||
{
|
{
|
||||||
// QFETCH(QVariantMap, timeDescriptor);
|
QFETCH(QVariantMap, timeDescriptor);
|
||||||
// QFETCH(QString, time);
|
QFETCH(QVariantMap, repeatingOption);
|
||||||
|
QFETCH(QString, time);
|
||||||
|
|
||||||
// initTimeManager();
|
initTimeManager();
|
||||||
|
|
||||||
// QVariantMap ruleMap; QVariantMap action; QVariantMap exitAction;
|
QVariantMap ruleMap; QVariantMap action; QVariantMap exitAction;
|
||||||
// action.insert("actionTypeId", mockActionIdNoParams);
|
action.insert("actionTypeId", mockActionIdNoParams);
|
||||||
// action.insert("deviceId", m_mockDeviceId);
|
action.insert("deviceId", m_mockDeviceId);
|
||||||
// action.insert("ruleActionParams", QVariantList());
|
action.insert("ruleActionParams", QVariantList());
|
||||||
// exitAction.insert("actionTypeId", mockActionIdWithParams);
|
exitAction.insert("actionTypeId", mockActionIdWithParams);
|
||||||
// QVariantList actionParams;
|
QVariantList actionParams;
|
||||||
// QVariantMap param1;
|
QVariantMap param1;
|
||||||
// param1.insert("name", "mockActionParam1");
|
param1.insert("name", "mockActionParam1");
|
||||||
// param1.insert("value", 12);
|
param1.insert("value", 12);
|
||||||
// actionParams.append(param1);
|
actionParams.append(param1);
|
||||||
// QVariantMap param2;
|
QVariantMap param2;
|
||||||
// param2.insert("name", "mockActionParam2");
|
param2.insert("name", "mockActionParam2");
|
||||||
// param2.insert("value", true);
|
param2.insert("value", true);
|
||||||
// actionParams.append(param2);
|
actionParams.append(param2);
|
||||||
// exitAction.insert("deviceId", m_mockDeviceId);
|
exitAction.insert("deviceId", m_mockDeviceId);
|
||||||
// exitAction.insert("ruleActionParams", actionParams);
|
exitAction.insert("ruleActionParams", actionParams);
|
||||||
// ruleMap.insert("name", "Time based hourly calendar rule");
|
ruleMap.insert("name", "Time based hourly calendar rule");
|
||||||
// ruleMap.insert("timeDescriptor", timeDescriptor);
|
ruleMap.insert("timeDescriptor", timeDescriptor);
|
||||||
// ruleMap.insert("actions", QVariantList() << action);
|
ruleMap.insert("actions", QVariantList() << action);
|
||||||
// ruleMap.insert("exitActions", QVariantList() << exitAction);
|
ruleMap.insert("exitActions", QVariantList() << exitAction);
|
||||||
|
|
||||||
// QVariant response = injectAndWait("Rules.AddRule", ruleMap);
|
QVariant response = injectAndWait("Rules.AddRule", ruleMap);
|
||||||
// verifyRuleError(response);
|
verifyRuleError(response);
|
||||||
// RuleId ruleId = RuleId(response.toMap().value("params").toMap().value("ruleId").toString());
|
RuleId ruleId = RuleId(response.toMap().value("params").toMap().value("ruleId").toString());
|
||||||
|
|
||||||
// QVariantMap params;
|
QVariantMap params;
|
||||||
// params.insert("ruleId", ruleId);
|
params.insert("ruleId", ruleId);
|
||||||
// response = injectAndWait("Rules.GetRuleDetails", params);
|
response = injectAndWait("Rules.GetRuleDetails", params);
|
||||||
|
|
||||||
// qDebug() << QJsonDocument::fromVariant(response.toMap().value("params").toMap()).toJson();
|
qDebug() << QJsonDocument::fromVariant(response.toMap().value("params").toMap()).toJson();
|
||||||
|
|
||||||
// QDateTime currentDateTime = GuhCore::instance()->timeManager()->currentDateTime();
|
QDateTime currentDateTime = GuhCore::instance()->timeManager()->currentDateTime();
|
||||||
|
|
||||||
// // start with one minute before starttime today
|
// start with one minute before starttime today
|
||||||
// QDateTime future = QDateTime(currentDateTime.date(), QTime::fromString(time, "hh:mm").addSecs(-60));
|
QDateTime future = QDateTime(currentDateTime.date(), QTime::fromString(time, "hh:mm").addSecs(-60));
|
||||||
|
QVariantList weekDaysVariant = repeatingOption.value("weekDays").toList();
|
||||||
|
|
||||||
// // check the next 7 days
|
QList<int> weekDays;
|
||||||
// for (int i = 0; i < 7; i++) {
|
foreach (const QVariant &variant, weekDaysVariant) {
|
||||||
// // inactive
|
weekDays.append(variant.toInt());
|
||||||
// GuhCore::instance()->timeManager()->setTime(future);
|
}
|
||||||
// verifyRuleNotExecuted();
|
|
||||||
|
|
||||||
// if (!timeDescriptor.value("calendarItems").toList().first().toMap().contains("weekDays")) {
|
// check the next 7 days
|
||||||
// // active
|
for (int i = 0; i < 7; i++) {
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(60));
|
// inactive
|
||||||
// verifyRuleExecuted(mockActionIdNoParams);
|
GuhCore::instance()->timeManager()->setTime(future);
|
||||||
// cleanupMockHistory();
|
verifyRuleNotExecuted();
|
||||||
// // active unchanged
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(6* 60));
|
|
||||||
// verifyRuleNotExecuted();
|
|
||||||
// // inactive
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(11 * 60));
|
|
||||||
// verifyRuleExecuted(mockActionIdWithParams);
|
|
||||||
// cleanupMockHistory();
|
|
||||||
// // inactive unchanged
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(12 * 60));
|
|
||||||
// verifyRuleNotExecuted();
|
|
||||||
// // One day "Back to the future"
|
|
||||||
// future = future.addDays(1);
|
|
||||||
// } else {
|
|
||||||
// // Check if today is a weekday
|
|
||||||
// QVariantList weekDays = timeDescriptor.value("calendarItems").toList().first().toMap().value("weekDays").toList();
|
|
||||||
// QDateTime todaysStartTime = QDateTime(currentDateTime.date(), QTime::fromString(time, "hh:mm"));
|
|
||||||
// if (weekDays.contains(QVariant(todaysStartTime.date().dayOfWeek()))) {
|
|
||||||
// // should trigger today
|
|
||||||
// // active
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future);
|
|
||||||
// verifyRuleExecuted(mockActionIdNoParams);
|
|
||||||
// cleanupMockHistory();
|
|
||||||
// // active unchanged
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(6* 60));
|
|
||||||
// verifyRuleNotExecuted();
|
|
||||||
// // inactive
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(11 * 60));
|
|
||||||
// verifyRuleExecuted(mockActionIdWithParams);
|
|
||||||
// cleanupMockHistory();
|
|
||||||
// // inactive unchanged
|
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(12 * 60));
|
|
||||||
// verifyRuleNotExecuted();
|
|
||||||
|
|
||||||
// // One day "Back to the future"
|
// Check if today is a weekday
|
||||||
// future = future.addDays(1);
|
qDebug() << "Day of week:" << future.date().dayOfWeek();
|
||||||
// } else {
|
if (weekDays.contains(future.date().dayOfWeek())) {
|
||||||
// // should not trigger today
|
// should trigger today
|
||||||
// // inactive
|
// active
|
||||||
// GuhCore::instance()->timeManager()->setTime(future);
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(60));
|
||||||
// verifyRuleNotExecuted();
|
verifyRuleExecuted(mockActionIdNoParams);
|
||||||
// // inactive
|
cleanupMockHistory();
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(6* 60));
|
// active unchanged
|
||||||
// verifyRuleNotExecuted();
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(6* 60));
|
||||||
// // inactive
|
verifyRuleNotExecuted();
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(11 * 60));
|
// inactive
|
||||||
// verifyRuleNotExecuted();
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(11 * 60));
|
||||||
// // inactive
|
verifyRuleExecuted(mockActionIdWithParams);
|
||||||
// GuhCore::instance()->timeManager()->setTime(future.addSecs(12 * 60));
|
cleanupMockHistory();
|
||||||
// verifyRuleNotExecuted();
|
// inactive unchanged
|
||||||
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(12 * 60));
|
||||||
|
verifyRuleNotExecuted();
|
||||||
|
|
||||||
// // One day "Back to the future"
|
// One day "Back to the future"
|
||||||
// future = future.addDays(1);
|
future = future.addDays(1);
|
||||||
// }
|
} else {
|
||||||
// }
|
// should not trigger today
|
||||||
// }
|
// inactive
|
||||||
// // REMOVE rule
|
GuhCore::instance()->timeManager()->setTime(future);
|
||||||
// QVariantMap removeParams;
|
verifyRuleNotExecuted();
|
||||||
// removeParams.insert("ruleId", ruleId);
|
// inactive
|
||||||
// response = injectAndWait("Rules.RemoveRule", removeParams);
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(6* 60));
|
||||||
// verifyRuleError(response);
|
verifyRuleNotExecuted();
|
||||||
|
// inactive
|
||||||
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(11 * 60));
|
||||||
|
verifyRuleNotExecuted();
|
||||||
|
// inactive
|
||||||
|
GuhCore::instance()->timeManager()->setTime(future.addSecs(12 * 60));
|
||||||
|
verifyRuleNotExecuted();
|
||||||
|
|
||||||
|
// One day "Back to the future"
|
||||||
|
future = future.addDays(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// REMOVE rule
|
||||||
|
QVariantMap removeParams;
|
||||||
|
removeParams.insert("ruleId", ruleId);
|
||||||
|
response = injectAndWait("Rules.RemoveRule", removeParams);
|
||||||
|
verifyRuleError(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestTimeManager::initTimeManager()
|
void TestTimeManager::initTimeManager()
|
||||||
{
|
{
|
||||||
GuhCore::instance()->timeManager()->stopTimer();
|
GuhCore::instance()->timeManager()->stopTimer();
|
||||||
qDebug() << GuhCore::instance()->timeManager()->currentTime().toString();
|
qDebug() << GuhCore::instance()->timeManager()->currentTime().toString();
|
||||||
|
qDebug() << GuhCore::instance()->timeManager()->currentDate().toString();
|
||||||
qDebug() << GuhCore::instance()->timeManager()->currentDateTime().toString();
|
qDebug() << GuhCore::instance()->timeManager()->currentDateTime().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user