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"