File indexing completed on 2024-04-21 03:52:41
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 #include <QTimeZone> 0017 0018 QTEST_MAIN(PeriodTest) 0019 0020 using namespace KCalendarCore; 0021 0022 void PeriodTest::testValidity() 0023 { 0024 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC); 0025 Period p1(p1DateTime, Duration(60)); 0026 Period p2; 0027 0028 QVERIFY(p1.hasDuration()); 0029 QCOMPARE(p1.duration().asSeconds(), 60); 0030 QVERIFY(p1.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC)); 0031 0032 p2 = p1; 0033 0034 QVERIFY(p2.hasDuration()); 0035 QVERIFY(p2.duration().asSeconds() == 60); 0036 QVERIFY(p2.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC)); 0037 0038 const QDateTime p3DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC); 0039 Period p3(p3DateTime, Duration(24 * 60 * 60)); 0040 0041 QVERIFY(p3.hasDuration()); 0042 QVERIFY(p3.duration().asSeconds() == 24 * 60 * 60); 0043 QVERIFY(p3.start() == QDateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC)); 0044 } 0045 0046 void PeriodTest::testCompare() 0047 { 0048 const QDateTime p1DateTime(QDate(2006, 8, 30), {}); 0049 Period p1(p1DateTime, Duration(24 * 60 * 60)); 0050 const QDateTime p2DateTime(QDate(2006, 8, 29), {}); 0051 Period p2(p2DateTime, Duration(23 * 60 * 60)); 0052 const QDateTime p3DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC); 0053 Period p3(p3DateTime, Duration(24 * 60 * 60)); 0054 Period p1copy {p1}; // test copy constructor 0055 Period p1assign; 0056 p1assign = p1; // test operator= 0057 Period p3copy {p3}; 0058 Period p3assign = p3; 0059 0060 QVERIFY(p2 < p1); 0061 QVERIFY(!(p1 == p2)); 0062 QVERIFY(p1copy == p1); 0063 QVERIFY(p1assign == p1); 0064 QVERIFY(p3copy == p3); 0065 QVERIFY(p3assign == p3); 0066 } 0067 0068 void PeriodTest::testDataStreamOut() 0069 { 0070 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC); 0071 const Duration duration(24 * 60 * 60); 0072 Period p1(p1DateTime, duration); 0073 0074 QByteArray byteArray; 0075 QDataStream out_stream(&byteArray, QIODevice::WriteOnly); 0076 0077 out_stream << p1; 0078 0079 QDataStream in_stream(&byteArray, QIODevice::ReadOnly); 0080 0081 QDateTime begin; 0082 deserializeKDateTimeAsQDateTime(in_stream, begin); 0083 // There is no way to serialize KDateTime as of KDE4.5 0084 // and the to/fromString methods do not perform a perfect reconstruction 0085 // of a datetime 0086 QVERIFY(begin == p1.start()); 0087 0088 QDateTime end; 0089 deserializeKDateTimeAsQDateTime(in_stream, end); 0090 QVERIFY(end == p1.end()); 0091 0092 bool dailyduration; 0093 in_stream >> dailyduration; 0094 QVERIFY(dailyduration == duration.isDaily()); 0095 0096 bool hasduration; 0097 in_stream >> hasduration; 0098 QVERIFY(hasduration == p1.hasDuration()); 0099 } 0100 0101 void PeriodTest::testDataStreamIn() 0102 { 0103 const QDateTime p1DateTime(QDate(2006, 8, 30), QTime(7, 0, 0), QTimeZone::UTC); 0104 const Duration duration(24 * 60 * 60); 0105 Period p1(p1DateTime, duration); 0106 0107 QByteArray byteArray; 0108 QDataStream out_stream(&byteArray, QIODevice::WriteOnly); 0109 0110 out_stream << p1; 0111 0112 QDataStream in_stream(&byteArray, QIODevice::ReadOnly); 0113 0114 Period p2; 0115 0116 in_stream >> p2; 0117 0118 QVERIFY(p1 == p2); 0119 } 0120 0121 #include "moc_testperiod.cpp"