add some validation for calendarItem
This commit is contained in:
parent
0f83dcd34a
commit
07e1259eda
@ -92,6 +92,10 @@ void CalendarItem::setRepeatingOption(const RepeatingOption &repeatingOption)
|
|||||||
*/
|
*/
|
||||||
bool CalendarItem::isValid() const
|
bool CalendarItem::isValid() const
|
||||||
{
|
{
|
||||||
|
// certain DateTime AND repeating option would not make sense
|
||||||
|
if (m_dateTime.isValid() && !repeatingOption().isEmtpy())
|
||||||
|
return false;
|
||||||
|
|
||||||
return (!m_startTime.isValid() != !m_dateTime.isValid()) && m_duration > 0;
|
return (!m_startTime.isValid() != !m_dateTime.isValid()) && m_duration > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -117,14 +117,6 @@ QList<int> RepeatingOption::monthDays() const
|
|||||||
return m_monthDays;
|
return m_monthDays;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*! Clears this RepeatingOption */
|
|
||||||
void RepeatingOption::clear()
|
|
||||||
{
|
|
||||||
m_mode = RepeatingModeNone;
|
|
||||||
m_weekDays.clear();
|
|
||||||
m_monthDays.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! Returns true if this \l{RepeatingOption} is empty. */
|
/*! Returns true if this \l{RepeatingOption} is empty. */
|
||||||
bool RepeatingOption::isEmtpy() const
|
bool RepeatingOption::isEmtpy() const
|
||||||
{
|
{
|
||||||
@ -150,6 +142,7 @@ bool RepeatingOption::isValid() const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Validate the lists
|
||||||
switch (m_mode) {
|
switch (m_mode) {
|
||||||
case RepeatingModeNone:
|
case RepeatingModeNone:
|
||||||
return m_weekDays.isEmpty() && m_monthDays.isEmpty();
|
return m_weekDays.isEmpty() && m_monthDays.isEmpty();
|
||||||
|
|||||||
@ -50,7 +50,6 @@ public:
|
|||||||
QList<int> weekDays() const;
|
QList<int> weekDays() const;
|
||||||
QList<int> monthDays() const;
|
QList<int> monthDays() const;
|
||||||
|
|
||||||
void clear();
|
|
||||||
bool isEmtpy() const;
|
bool isEmtpy() const;
|
||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
|
||||||
|
|||||||
@ -45,6 +45,7 @@ private slots:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QVariantMap createCalendarItem(const QString &time = "00:00", const uint &duration = 0, const QVariantMap &repeatingOption = QVariantMap()) const;
|
QVariantMap createCalendarItem(const QString &time = "00:00", const uint &duration = 0, const QVariantMap &repeatingOption = QVariantMap()) const;
|
||||||
|
QVariantMap createCalendarItem(const int &dateTime, const uint &duration = 0, const QVariantMap &repeatingOption = QVariantMap()) const;
|
||||||
QVariantMap createTimeDescriptorCalendar(const QVariantMap calendarItem) const;
|
QVariantMap createTimeDescriptorCalendar(const QVariantMap calendarItem) const;
|
||||||
QVariantMap createTimeDescriptorCalendar(const QVariantList calendarItems) const;
|
QVariantMap createTimeDescriptorCalendar(const QVariantList calendarItems) const;
|
||||||
|
|
||||||
@ -93,6 +94,12 @@ void TestTimeManager::addTimeDescriptor_data()
|
|||||||
QVariantMap repeatingOptionDaily;
|
QVariantMap repeatingOptionDaily;
|
||||||
repeatingOptionDaily.insert("mode", "RepeatingModeDaily");
|
repeatingOptionDaily.insert("mode", "RepeatingModeDaily");
|
||||||
|
|
||||||
|
QVariantMap repeatingOptionNone;
|
||||||
|
repeatingOptionNone.insert("mode", "RepeatingModeNone");
|
||||||
|
|
||||||
|
QVariantMap repeatingOptionHourly;
|
||||||
|
repeatingOptionHourly.insert("mode", "RepeatingModeHourly");
|
||||||
|
|
||||||
QVariantMap repeatingOptionWeeklyMultiple;
|
QVariantMap repeatingOptionWeeklyMultiple;
|
||||||
repeatingOptionWeeklyMultiple.insert("mode", "RepeatingModeWeekly");
|
repeatingOptionWeeklyMultiple.insert("mode", "RepeatingModeWeekly");
|
||||||
repeatingOptionWeeklyMultiple.insert("weekDays", QVariantList() << 2 << 4 << 5);
|
repeatingOptionWeeklyMultiple.insert("weekDays", QVariantList() << 2 << 4 << 5);
|
||||||
@ -131,17 +138,19 @@ void TestTimeManager::addTimeDescriptor_data()
|
|||||||
calendarItems.append(createCalendarItem("08:00", 5, repeatingOptionDaily));
|
calendarItems.append(createCalendarItem("08:00", 5, repeatingOptionDaily));
|
||||||
calendarItems.append(createCalendarItem("09:00", 5, repeatingOptionWeeklyMultiple));
|
calendarItems.append(createCalendarItem("09:00", 5, repeatingOptionWeeklyMultiple));
|
||||||
|
|
||||||
// Invalid timeDescriptor
|
|
||||||
|
|
||||||
QTest::addColumn<QVariantMap>("timeDescriptor");
|
QTest::addColumn<QVariantMap>("timeDescriptor");
|
||||||
QTest::addColumn<RuleEngine::RuleError>("error");
|
QTest::addColumn<RuleEngine::RuleError>("error");
|
||||||
|
|
||||||
|
|
||||||
QTest::newRow("valid: single calendarItem") << createTimeDescriptorCalendar(createCalendarItem("08:00", 5)) << RuleEngine::RuleErrorNoError;
|
QTest::newRow("valid: single calendarItem") << createTimeDescriptorCalendar(createCalendarItem("08:00", 5)) << RuleEngine::RuleErrorNoError;
|
||||||
|
QTest::newRow("valid: single calendarItem dateTime") << createTimeDescriptorCalendar(createCalendarItem(QDateTime::currentDateTime().toTime_t(), 5)) << RuleEngine::RuleErrorNoError;
|
||||||
QTest::newRow("valid: single calendarItem - daily") << createTimeDescriptorCalendar(createCalendarItem("08:00", 5, repeatingOptionDaily)) << RuleEngine::RuleErrorNoError;
|
QTest::newRow("valid: single calendarItem - daily") << createTimeDescriptorCalendar(createCalendarItem("08:00", 5, repeatingOptionDaily)) << RuleEngine::RuleErrorNoError;
|
||||||
|
QTest::newRow("valid: calendarItem - none") << createTimeDescriptorCalendar(createCalendarItem("09:00", 30, repeatingOptionNone)) << RuleEngine::RuleErrorNoError;
|
||||||
|
QTest::newRow("valid: calendarItem - hourly") << createTimeDescriptorCalendar(createCalendarItem("09:00", 30, repeatingOptionHourly)) << RuleEngine::RuleErrorNoError;
|
||||||
QTest::newRow("valid: calendarItems - weekly - multiple days") << createTimeDescriptorCalendar(calendarItems) << RuleEngine::RuleErrorNoError;
|
QTest::newRow("valid: calendarItems - weekly - multiple days") << createTimeDescriptorCalendar(calendarItems) << RuleEngine::RuleErrorNoError;
|
||||||
QTest::newRow("valid: calendarItem - monthly - multiple days") << createTimeDescriptorCalendar(createCalendarItem("23:00", 5, repeatingOptionMonthlyMultiple)) << RuleEngine::RuleErrorNoError;
|
QTest::newRow("valid: calendarItem - monthly - multiple days") << createTimeDescriptorCalendar(createCalendarItem("23:00", 5, repeatingOptionMonthlyMultiple)) << RuleEngine::RuleErrorNoError;
|
||||||
|
|
||||||
|
QTest::newRow("invalid: calendarItem empty") << createTimeDescriptorCalendar(createCalendarItem()) << RuleEngine::RuleErrorInvalidCalendarItem;
|
||||||
|
QTest::newRow("invalid: calendarItem - dateTime + repeatingOption") << createTimeDescriptorCalendar(createCalendarItem(QDateTime::currentDateTime().toTime_t(), 5, repeatingOptionDaily)) << RuleEngine::RuleErrorInvalidCalendarItem;
|
||||||
QTest::newRow("invalid: calendarItem invalid time") << createTimeDescriptorCalendar(createCalendarItem("35:80", 5)) << RuleEngine::RuleErrorInvalidCalendarItem;
|
QTest::newRow("invalid: calendarItem invalid time") << createTimeDescriptorCalendar(createCalendarItem("35:80", 5)) << RuleEngine::RuleErrorInvalidCalendarItem;
|
||||||
QTest::newRow("invalid: calendarItem invalid duration") << createTimeDescriptorCalendar(createCalendarItem("12:00", 0)) << RuleEngine::RuleErrorInvalidCalendarItem;
|
QTest::newRow("invalid: calendarItem invalid duration") << createTimeDescriptorCalendar(createCalendarItem("12:00", 0)) << RuleEngine::RuleErrorInvalidCalendarItem;
|
||||||
QTest::newRow("invalid: calendarItem - monthly - weekDays") << createTimeDescriptorCalendar(createCalendarItem("13:13", 5, repeatingOptionInvalidMonthly)) << RuleEngine::RuleErrorInvalidRepeatingOption;
|
QTest::newRow("invalid: calendarItem - monthly - weekDays") << createTimeDescriptorCalendar(createCalendarItem("13:13", 5, repeatingOptionInvalidMonthly)) << RuleEngine::RuleErrorInvalidRepeatingOption;
|
||||||
@ -194,6 +203,17 @@ QVariantMap TestTimeManager::createCalendarItem(const QString &time, const uint
|
|||||||
return calendarItem;
|
return calendarItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap TestTimeManager::createCalendarItem(const int &dateTime, const uint &duration, const QVariantMap &repeatingOption) const
|
||||||
|
{
|
||||||
|
QVariantMap calendarItem;
|
||||||
|
calendarItem.insert("datetime", dateTime);
|
||||||
|
calendarItem.insert("duration", duration);
|
||||||
|
if (!repeatingOption.isEmpty())
|
||||||
|
calendarItem.insert("repeating", repeatingOption);
|
||||||
|
|
||||||
|
return calendarItem;
|
||||||
|
}
|
||||||
|
|
||||||
QVariantMap TestTimeManager::createTimeDescriptorCalendar(const QVariantMap calendarItem) const
|
QVariantMap TestTimeManager::createTimeDescriptorCalendar(const QVariantMap calendarItem) const
|
||||||
{
|
{
|
||||||
QVariantMap timeDescriptorCalendar;
|
QVariantMap timeDescriptorCalendar;
|
||||||
|
|||||||
Reference in New Issue
Block a user