File indexing completed on 2024-04-21 03:52:40

0001 /*
0002   This file is part of the kcalcore library.
0003 
0004   SPDX-FileCopyrightText: 2007-2008 Allen Winter <winter@kde.org>
0005 
0006   SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 #include "testfreebusy.h"
0009 #include "freebusy.h"
0010 
0011 #include <QTest>
0012 QTEST_MAIN(FreeBusyTest)
0013 
0014 using namespace KCalendarCore;
0015 
0016 void FreeBusyTest::testValidity()
0017 {
0018     const QDateTime firstDateTime(QDate(2007, 7, 23), QTime(7, 0, 0), QTimeZone::UTC);
0019 
0020     FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC));
0021 
0022     QCOMPARE(fb1.dtEnd(), QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC));
0023 }
0024 
0025 void FreeBusyTest::testAddSort()
0026 {
0027     Period::List periods;
0028 
0029     const QDateTime firstq1DateTime(QDate(2007, 7, 23), QTime(7, 0, 0), QTimeZone::UTC);
0030     Period q1(firstq1DateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC));
0031     periods.append(q1);
0032 
0033     const QDateTime firstq2DateTime(QDate(2007, 8, 23), QTime(7, 0, 0), QTimeZone::UTC);
0034     Period q2(firstq2DateTime, QDateTime(QDate(2007, 8, 23), QTime(8, 0, 0), QTimeZone::UTC));
0035     periods.append(q2);
0036 
0037     const QDateTime firstq3DateTime(QDate(2007, 9, 23), QTime(7, 0, 0), QTimeZone::UTC);
0038     Period q3(firstq3DateTime, QDateTime(QDate(2007, 9, 23), QTime(8, 0, 0), QTimeZone::UTC));
0039     periods.append(q3);
0040 
0041     FreeBusy fb1;
0042     fb1.addPeriods(periods);
0043 
0044     const QDateTime firstfb1DateTime(QDate(2007, 10, 27), QTime(7, 0, 0), QTimeZone::UTC);
0045     fb1.addPeriod(firstfb1DateTime, QDateTime(QDate(2007, 10, 27), QTime(8, 0, 0), QTimeZone::UTC));
0046 
0047     const QDateTime secondfb1DateTime(QDate(2007, 8, 27), QTime(7, 0, 0), QTimeZone::UTC);
0048     fb1.addPeriod(secondfb1DateTime, QDateTime(QDate(2007, 8, 27), QTime(8, 0, 0), QTimeZone::UTC));
0049 
0050     const QDateTime thirdfb1DateTime(QDate(2007, 6, 27), QTime(7, 0, 0), QTimeZone::UTC);
0051     fb1.addPeriod(thirdfb1DateTime, QDateTime(QDate(2007, 6, 27), QTime(8, 0, 0), QTimeZone::UTC));
0052 
0053     Period::List busyPeriods = fb1.busyPeriods();
0054     QVERIFY(!busyPeriods.isEmpty());
0055     QCOMPARE(busyPeriods.last().end(), QDateTime(QDate(2007, 10, 27), QTime(8, 0, 0), QTimeZone::UTC));
0056 }
0057 
0058 void FreeBusyTest::testAssign()
0059 {
0060     const QDateTime firstDateTime(QDate(2007, 7, 23), QTime(7, 0, 0), QTimeZone::UTC);
0061 
0062     FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC));
0063 
0064     IncidenceBase *fb2 = new FreeBusy;
0065     *fb2 = fb1;     // Use IncidenceBase's virtual assignment.
0066     QCOMPARE(fb1, *fb2);
0067 
0068     fb1.setDtStart(firstDateTime.addDays(1));
0069     fb2->setDtStart(firstDateTime.addDays(2));
0070     QVERIFY(!(fb1 == *fb2));
0071 }
0072 
0073 void FreeBusyTest::testCopyConstructor()
0074 {
0075     const QDateTime firstDateTime(QDate(2007, 7, 23), QTime(7, 0, 0), QTimeZone::UTC);
0076 
0077     FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC));
0078 
0079     FreeBusy fb2 {fb1};
0080     QCOMPARE(fb1, fb2);
0081 }
0082 
0083 
0084 void FreeBusyTest::testDataStream()
0085 {
0086     const QDateTime firstDateTime(QDate(2007, 7, 23), QTime(7, 0, 0), QTimeZone::UTC);
0087     FreeBusy::Ptr fb1(new FreeBusy(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), QTimeZone::UTC)));
0088 
0089     QByteArray byteArray;
0090     QDataStream out_stream(&byteArray, QIODevice::WriteOnly);
0091 
0092     out_stream << fb1;
0093 
0094     QDataStream in_stream(&byteArray, QIODevice::ReadOnly);
0095 
0096     FreeBusy::Ptr fb2;
0097 
0098     in_stream >> fb2;
0099 
0100     QCOMPARE(fb1->dtEnd(), fb2->dtEnd());
0101     QCOMPARE(fb1->busyPeriods(), fb2->busyPeriods());
0102     //   QVERIFY( *fb1 == *fb2 );
0103 }
0104 
0105 #include "moc_testfreebusy.cpp"