File indexing completed on 2024-05-05 12:10:31
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), Qt::UTC); 0019 0020 FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::UTC)); 0021 0022 QCOMPARE(fb1.dtEnd(), QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::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), Qt::UTC); 0030 Period q1(firstq1DateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::UTC)); 0031 periods.append(q1); 0032 0033 const QDateTime firstq2DateTime(QDate(2007, 8, 23), QTime(7, 0, 0), Qt::UTC); 0034 Period q2(firstq2DateTime, QDateTime(QDate(2007, 8, 23), QTime(8, 0, 0), Qt::UTC)); 0035 periods.append(q2); 0036 0037 const QDateTime firstq3DateTime(QDate(2007, 9, 23), QTime(7, 0, 0), Qt::UTC); 0038 Period q3(firstq3DateTime, QDateTime(QDate(2007, 9, 23), QTime(8, 0, 0), Qt::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), Qt::UTC); 0045 fb1.addPeriod(firstfb1DateTime, QDateTime(QDate(2007, 10, 27), QTime(8, 0, 0), Qt::UTC)); 0046 0047 const QDateTime secondfb1DateTime(QDate(2007, 8, 27), QTime(7, 0, 0), Qt::UTC); 0048 fb1.addPeriod(secondfb1DateTime, QDateTime(QDate(2007, 8, 27), QTime(8, 0, 0), Qt::UTC)); 0049 0050 const QDateTime thirdfb1DateTime(QDate(2007, 6, 27), QTime(7, 0, 0), Qt::UTC); 0051 fb1.addPeriod(thirdfb1DateTime, QDateTime(QDate(2007, 6, 27), QTime(8, 0, 0), Qt::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), Qt::UTC)); 0056 } 0057 0058 void FreeBusyTest::testAssign() 0059 { 0060 const QDateTime firstDateTime(QDate(2007, 7, 23), QTime(7, 0, 0), Qt::UTC); 0061 0062 FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::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), Qt::UTC); 0076 0077 FreeBusy fb1(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::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), Qt::UTC); 0087 FreeBusy::Ptr fb1(new FreeBusy(firstDateTime, QDateTime(QDate(2007, 7, 23), QTime(8, 0, 0), Qt::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"