File indexing completed on 2024-04-14 03:50:37

0001 /*
0002  * SPDX-FileCopyrightText: 2012 Christian Mollekopf <mollekopf@kolabsys.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-3.0-or-later
0005  */
0006 
0007 #include "testreadrecurrenceid.h"
0008 #include "exceptions.h"
0009 #include "icalformat.h"
0010 #include "memorycalendar.h"
0011 
0012 #include <QDebug>
0013 #include <QTest>
0014 #include <QTimeZone>
0015 
0016 QTEST_MAIN(TestReadRecurrenceId)
0017 
0018 void TestReadRecurrenceId::testReadSingleException()
0019 {
0020     KCalendarCore::ICalFormat format;
0021     QFile file(QLatin1String(ICALTESTDATADIR) + QLatin1String("test_recurrenceid_single.ics"));
0022     QVERIFY(file.open(QIODevice::ReadOnly));
0023     //   qDebug() << file.readAll();
0024 
0025     KCalendarCore::Incidence::Ptr i = format.fromString(QString::fromUtf8(file.readAll()));
0026     if (!i) {
0027         qWarning() << "Failed to parse incidence!";
0028         if (format.exception()) {
0029             qWarning() << format.exception()->arguments();
0030         }
0031     }
0032     QVERIFY(i);
0033     QVERIFY(i->hasRecurrenceId());
0034 }
0035 
0036 void TestReadRecurrenceId::testReadSingleExceptionWithThisAndFuture()
0037 {
0038     KCalendarCore::ICalFormat format;
0039     QFile file(QLatin1String(ICALTESTDATADIR) + QLatin1String("test_recurrenceid_thisandfuture.ics"));
0040     QVERIFY(file.open(QIODevice::ReadOnly));
0041     KCalendarCore::Incidence::Ptr i = format.fromString(QString::fromUtf8(file.readAll()));
0042     QVERIFY(i);
0043     QVERIFY(i->hasRecurrenceId());
0044     QVERIFY(i->thisAndFuture());
0045 }
0046 
0047 void TestReadRecurrenceId::testReadWriteSingleExceptionWithThisAndFuture()
0048 {
0049     KCalendarCore::MemoryCalendar::Ptr cal(new KCalendarCore::MemoryCalendar(QTimeZone::utc()));
0050     KCalendarCore::ICalFormat format;
0051     KCalendarCore::Incidence::Ptr inc(new KCalendarCore::Event);
0052     QTimeZone tz("Europe/Berlin");
0053     QDateTime startDate(QDate(2015, 1, 2), QTime(3, 4, 5), tz);
0054     inc->setDtStart(startDate);
0055     inc->setRecurrenceId(startDate);
0056     inc->setThisAndFuture(true);
0057     cal->addIncidence(inc);
0058     const QString result = format.toString(cal);
0059     qDebug() << result;
0060 
0061     KCalendarCore::Incidence::Ptr i = format.fromString(result);
0062     QVERIFY(i);
0063     QVERIFY(i->hasRecurrenceId());
0064     QVERIFY(i->thisAndFuture());
0065     QCOMPARE(i->recurrenceId(), startDate);
0066 }
0067 
0068 void TestReadRecurrenceId::testReadExceptionWithMainEvent()
0069 {
0070     KCalendarCore::MemoryCalendar::Ptr calendar(new KCalendarCore::MemoryCalendar(QTimeZone::utc()));
0071     KCalendarCore::ICalFormat format;
0072     QFile file(QLatin1String(ICALTESTDATADIR) + QLatin1String("test_recurrenceid.ics"));
0073     QVERIFY(file.open(QIODevice::ReadOnly));
0074     format.fromString(calendar, QString::fromUtf8(file.readAll()));
0075     QCOMPARE(calendar->rawEvents().size(), 2);
0076 }
0077 
0078 #include "moc_testreadrecurrenceid.cpp"