File indexing completed on 2024-04-28 15:18:56

0001 /*
0002   SPDX-FileCopyrightText: 2021 Glen Ditchfield <GJDitchfield@acm.org>
0003   SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "event.h"
0007 
0008 #include <QTest>
0009 
0010 using namespace KCalendarCore;
0011 
0012 class TestStartDateTimesForDate: public QObject
0013 {
0014     Q_OBJECT
0015 
0016     const QDate testDate { 2021, 01, 31};
0017     const QTimeZone tz = QTimeZone::systemTimeZone();
0018 private Q_SLOTS:
0019     void testNonRecurringEvents_data();
0020     void testNonRecurringEvents();
0021 };
0022 
0023 Event::Ptr mkEvent(bool allDay, QDateTime dtStart, QDateTime dtEnd)
0024 {
0025     Event::Ptr event = Event::Ptr(new Event());
0026     event->setDtStart(dtStart);
0027     event->setDtEnd(dtEnd);
0028     event->setAllDay(allDay);
0029     return event;
0030 }
0031 
0032 void TestStartDateTimesForDate::testNonRecurringEvents_data()
0033 {
0034     QTest::addColumn<bool>("allDay");
0035     QTest::addColumn<QDateTime>("dtStart");
0036     QTest::addColumn<QDateTime>("dtEnd");
0037     QTest::addColumn<bool>("expected");
0038 
0039     QTest::newRow("all day, before") << true << QDateTime{testDate.addDays(-2), {}, tz} << QDateTime(testDate.addDays(-1), {}, tz) << false;
0040     QTest::newRow("all day, up to") << true << QDateTime{testDate.addDays(-1), {}, tz} << QDateTime(testDate, {}, tz) << true;
0041     QTest::newRow("all day, around") << true << QDateTime{testDate.addDays(-2), {}, tz} << QDateTime(testDate.addDays(+1), {}, tz) << true;
0042     QTest::newRow("all day, on") << true << QDateTime{testDate, {}, tz} << QDateTime(testDate, {}, tz) << true;
0043     QTest::newRow("all day, from") << true << QDateTime{testDate, {}, tz} << QDateTime(testDate.addDays(+1), {}, tz) << true;
0044     QTest::newRow("all day, after") << true << QDateTime{testDate.addDays(+1), {}, tz} << QDateTime(testDate.addDays(+2), {}, tz) << false;
0045 
0046     QTest::newRow("before") << false << QDateTime{testDate.addDays(-2), {}, tz} << QDateTime(testDate, {}, tz).addMSecs(-1) << false;
0047     QTest::newRow("up to") << false << QDateTime{testDate.addDays(-1), {}, tz} << QDateTime(testDate, {00,00,01}, tz) << true;
0048     QTest::newRow("around") << false << QDateTime{testDate.addDays(-2), {}, tz} << QDateTime(testDate.addDays(+1), {}, tz) << true;
0049     QTest::newRow("on") << false << QDateTime{testDate, {}, tz} << QDateTime(testDate.addDays(+1), {}, tz).addMSecs(-1) << true;
0050     QTest::newRow("during") << false << QDateTime{testDate, {01,00,00}, tz} << QDateTime(testDate, {21,00,00}, tz) << true;
0051     QTest::newRow("from") << false << QDateTime{testDate, {}, tz} << QDateTime(testDate.addDays(+2), {}, tz) << true;
0052     QTest::newRow("after") << false << QDateTime{testDate.addDays(+1), {}, tz} << QDateTime(testDate.addDays(+2), {}, tz) << false;
0053 }
0054 
0055 void TestStartDateTimesForDate::testNonRecurringEvents()
0056 {
0057     QFETCH(bool, allDay);
0058     QFETCH(QDateTime, dtStart);
0059     QFETCH(QDateTime, dtEnd);
0060     QFETCH(bool, expected);
0061 
0062     auto event = mkEvent(allDay, dtStart, dtEnd);
0063     auto result = event->startDateTimesForDate(testDate, tz);
0064     QVERIFY(expected == (result == QList<QDateTime> {dtStart}));
0065 }
0066 
0067 QTEST_MAIN(TestStartDateTimesForDate)
0068 #include "teststartdatetimesfordate.moc"