File indexing completed on 2024-03-24 03:55:29
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"