File indexing completed on 2024-04-21 03:52:39
0001 /* 0002 This file is part of the kcalcore library. 0003 0004 SPDX-FileCopyrightText: 2006 Allen Winter <winter@kde.org> 0005 0006 SPDX-License-Identifier: LGPL-2.0-or-later 0007 */ 0008 0009 #include "testduration.h" 0010 #include "duration.h" 0011 0012 #include <QDateTime> 0013 #include <QTimeZone> 0014 0015 #include <QTest> 0016 QTEST_MAIN(DurationTest) 0017 0018 using namespace KCalendarCore; 0019 0020 void DurationTest::testValidity() 0021 { 0022 const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), QTimeZone::UTC); 0023 0024 Duration d(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), QTimeZone::UTC)); 0025 0026 QCOMPARE(d.asSeconds(), 1 * 60 * 60); 0027 } 0028 0029 void DurationTest::testCompare() 0030 { 0031 const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), QTimeZone::UTC); 0032 0033 Duration d1(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), QTimeZone::UTC)); 0034 // d1 has 1hr duration 0035 0036 Duration d2(2 * 60 * 60); // 2hr duration 0037 0038 Duration d1copy {d1}; // test copy constructor 0039 Duration d1assign; 0040 d1assign = d1; // test operator= 0041 0042 QVERIFY(d1 < d2); 0043 QVERIFY(d1 != d2); 0044 QVERIFY(d1copy == d1); 0045 QVERIFY(d1assign == d1); 0046 0047 Duration d3(7, Duration::Days); 0048 Duration d4(7 * 24 * 60 * 60, Duration::Seconds); 0049 QVERIFY(d3 != d4); // cannot compare days durations with seconds durations 0050 0051 QVERIFY(d3 > d2); 0052 QVERIFY(-d3 < d2); 0053 0054 Duration d5 = d1; 0055 d5 += d2; // should be 3hrs 0056 QVERIFY(d5 > d2); 0057 QVERIFY(d2 < d5); 0058 Duration d6(3 * 60 * 60); 0059 QVERIFY(d6 == d5); 0060 QVERIFY((d6 -= (2 * 60 * 60)) == d1); 0061 } 0062 0063 void DurationTest::testSerializer_data() 0064 { 0065 QTest::addColumn<KCalendarCore::Duration>("duration"); 0066 0067 Duration duration1; 0068 Duration duration2(7, Duration::Days); 0069 Duration duration3(7 * 24 * 60 * 60, Duration::Seconds); 0070 0071 const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), QTimeZone::UTC); 0072 Duration duration4(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), QTimeZone::UTC)); 0073 0074 QTest::newRow("duration1") << duration1; 0075 QTest::newRow("duration2") << duration2; 0076 QTest::newRow("duration3") << duration3; 0077 QTest::newRow("duration4") << duration4; 0078 } 0079 0080 void DurationTest::testSerializer() 0081 { 0082 QFETCH(KCalendarCore::Duration, duration); 0083 0084 QByteArray array; 0085 QDataStream stream(&array, QIODevice::WriteOnly); 0086 stream << duration; // Serialize 0087 0088 Duration duration2; 0089 QDataStream stream2(&array, QIODevice::ReadOnly); 0090 stream2 >> duration2; // deserialize 0091 QVERIFY(duration == duration2); 0092 } 0093 0094 void DurationTest::testIsNull() 0095 { 0096 Duration d; 0097 QVERIFY(d.isNull()); 0098 0099 Duration d2(7, Duration::Days); 0100 QVERIFY(!d2.isNull()); 0101 } 0102 0103 #include "moc_testduration.cpp"