Warning, file /frameworks/kcalendarcore/autotests/testduration.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 
0014 #include <QTest>
0015 QTEST_MAIN(DurationTest)
0016 
0017 using namespace KCalendarCore;
0018 
0019 void DurationTest::testValidity()
0020 {
0021     const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), Qt::UTC);
0022 
0023     Duration d(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), Qt::UTC));
0024 
0025     QCOMPARE(d.asSeconds(), 1 * 60 * 60);
0026 }
0027 
0028 void DurationTest::testCompare()
0029 {
0030     const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), Qt::UTC);
0031 
0032     Duration d1(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), Qt::UTC));
0033     // d1 has 1hr duration
0034 
0035     Duration d2(2 * 60 * 60); // 2hr duration
0036 
0037     Duration d1copy {d1}; // test copy constructor
0038     Duration d1assign;
0039     d1assign = d1; // test operator=
0040 
0041     QVERIFY(d1 < d2);
0042     QVERIFY(d1 != d2);
0043     QVERIFY(d1copy == d1);
0044     QVERIFY(d1assign == d1);
0045 
0046     Duration d3(7, Duration::Days);
0047     Duration d4(7 * 24 * 60 * 60, Duration::Seconds);
0048     QVERIFY(d3 != d4); // cannot compare days durations with seconds durations
0049 
0050     QVERIFY(d3 > d2);
0051     QVERIFY(-d3 < d2);
0052 
0053     Duration d5 = d1;
0054     d5 += d2; // should be 3hrs
0055     QVERIFY(d5 > d2);
0056     QVERIFY(d2 < d5);
0057     Duration d6(3 * 60 * 60);
0058     QVERIFY(d6 == d5);
0059     QVERIFY((d6 -= (2 * 60 * 60)) == d1);
0060 }
0061 
0062 void DurationTest::testSerializer_data()
0063 {
0064     QTest::addColumn<KCalendarCore::Duration>("duration");
0065 
0066     Duration duration1;
0067     Duration duration2(7, Duration::Days);
0068     Duration duration3(7 * 24 * 60 * 60, Duration::Seconds);
0069 
0070     const QDateTime firstDateTime(QDate(2006, 8, 3), QTime(7, 0, 0), Qt::UTC);
0071     Duration duration4(firstDateTime, QDateTime(QDate(2006, 8, 3), QTime(8, 0, 0), Qt::UTC));
0072 
0073     QTest::newRow("duration1") << duration1;
0074     QTest::newRow("duration2") << duration2;
0075     QTest::newRow("duration3") << duration3;
0076     QTest::newRow("duration4") << duration4;
0077 }
0078 
0079 void DurationTest::testSerializer()
0080 {
0081     QFETCH(KCalendarCore::Duration, duration);
0082 
0083     QByteArray array;
0084     QDataStream stream(&array, QIODevice::WriteOnly);
0085     stream << duration; // Serialize
0086 
0087     Duration duration2;
0088     QDataStream stream2(&array, QIODevice::ReadOnly);
0089     stream2 >> duration2; // deserialize
0090     QVERIFY(duration == duration2);
0091 }
0092 
0093 void DurationTest::testIsNull()
0094 {
0095     Duration d;
0096     QVERIFY(d.isNull());
0097 
0098     Duration d2(7, Duration::Days);
0099     QVERIFY(!d2.isNull());
0100 }
0101 
0102 #include "moc_testduration.cpp"