File indexing completed on 2024-04-28 15:18:55
0001 /* 0002 This file is part of the kcalcore library. 0003 0004 SPDX-FileCopyrightText: 2006 Narayan Newton <narayannewton@gmail.com> 0005 SPDX-FileCopyrightText: 2010 Casey Link <unnamedrambler@gmail.com> 0006 SPDX-FileCopyrightText: 2009-2010 Klaralvdalens Datakonsult AB, a KDAB Group company <info@kdab.net> 0007 0008 SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 #include "testperiod.h" 0012 #include "period.h" 0013 #include "utils_p.h" 0014 0015 #include <QTest> 0016 QTEST_MAIN(PeriodTest) 0017 0018 using namespace KCalendarCore; 0019 0020 void PeriodTest::testValidity() 0021 { 0022 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC); 0023 Period p1(p1DateTime, Duration(60)); 0024 Period p2; 0025 0026 QVERIFY(p1.hasDuration()); 0027 QCOMPARE(p1.duration().asSeconds(), 60); 0028 QVERIFY(p1.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC)); 0029 0030 p2 = p1; 0031 0032 QVERIFY(p2.hasDuration()); 0033 QVERIFY(p2.duration().asSeconds() == 60); 0034 QVERIFY(p2.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC)); 0035 0036 const QDateTime p3DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC); 0037 Period p3(p3DateTime, Duration(24 * 60 * 60)); 0038 0039 QVERIFY(p3.hasDuration()); 0040 QVERIFY(p3.duration().asSeconds() == 24 * 60 * 60); 0041 QVERIFY(p3.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC)); 0042 } 0043 0044 void PeriodTest::testCompare() 0045 { 0046 const QDateTime p1DateTime(QDate(2006, 8, 30), {}); 0047 Period p1(p1DateTime, Duration(24 * 60 * 60)); 0048 const QDateTime p2DateTime(QDate(2006, 8, 29), {}); 0049 Period p2(p2DateTime, Duration(23 * 60 * 60)); 0050 const QDateTime p3DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC); 0051 Period p3(p3DateTime, Duration(24 * 60 * 60)); 0052 Period p1copy {p1}; // test copy constructor 0053 Period p1assign; 0054 p1assign = p1; // test operator= 0055 Period p3copy {p3}; 0056 Period p3assign = p3; 0057 0058 QVERIFY(p2 < p1); 0059 QVERIFY(!(p1 == p2)); 0060 QVERIFY(p1copy == p1); 0061 QVERIFY(p1assign == p1); 0062 QVERIFY(p3copy == p3); 0063 QVERIFY(p3assign == p3); 0064 } 0065 0066 void PeriodTest::testDataStreamOut() 0067 { 0068 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC); 0069 const Duration duration(24 * 60 * 60); 0070 Period p1(p1DateTime, duration); 0071 0072 QByteArray byteArray; 0073 QDataStream out_stream(&byteArray, QIODevice::WriteOnly); 0074 0075 out_stream << p1; 0076 0077 QDataStream in_stream(&byteArray, QIODevice::ReadOnly); 0078 0079 QDateTime begin; 0080 deserializeKDateTimeAsQDateTime(in_stream, begin); 0081 // There is no way to serialize KDateTime as of KDE4.5 0082 // and the to/fromString methods do not perform a perfect reconstruction 0083 // of a datetime 0084 QVERIFY(begin == p1.start()); 0085 0086 QDateTime end; 0087 deserializeKDateTimeAsQDateTime(in_stream, end); 0088 QVERIFY(end == p1.end()); 0089 0090 bool dailyduration; 0091 in_stream >> dailyduration; 0092 QVERIFY(dailyduration == duration.isDaily()); 0093 0094 bool hasduration; 0095 in_stream >> hasduration; 0096 QVERIFY(hasduration == p1.hasDuration()); 0097 } 0098 0099 void PeriodTest::testDataStreamIn() 0100 { 0101 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), Qt::UTC); 0102 const Duration duration(24 * 60 * 60); 0103 Period p1(p1DateTime, duration); 0104 0105 QByteArray byteArray; 0106 QDataStream out_stream(&byteArray, QIODevice::WriteOnly); 0107 0108 out_stream << p1; 0109 0110 QDataStream in_stream(&byteArray, QIODevice::ReadOnly); 0111 0112 Period p2; 0113 0114 in_stream >> p2; 0115 0116 QVERIFY(p1 == p2); 0117 } 0118 0119 #include "moc_testperiod.cpp"