File indexing completed on 2024-04-21 03:52:41

0001 /*
0002   This file is part of the kcalcore library.
0003 
0004   SPDX-FileCopyrightText: 2007-2008 Allen Winter <winter@kde.org>
0005 
0006   SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008 #include "testjournal.h"
0009 #include "journal.h"
0010 
0011 #include <QTest>
0012 QTEST_MAIN(JournalTest)
0013 
0014 using namespace KCalendarCore;
0015 
0016 void JournalTest::testValidity()
0017 {
0018     QDate dt = QDate::currentDate();
0019     Journal journal;
0020     journal.setDtStart(QDateTime(dt, {}));
0021     journal.setAllDay(true);
0022     journal.setSummary(QStringLiteral("Journal Summary"));
0023     journal.setDescription(QStringLiteral("This is a description of my journal"));
0024     journal.setLocation(QStringLiteral("the place"));
0025     QCOMPARE(journal.typeStr(), QByteArray("Journal"));
0026     QVERIFY(journal.summary() == QLatin1String("Journal Summary"));
0027     QVERIFY(journal.location() == QLatin1String("the place"));
0028 }
0029 
0030 void JournalTest::testCompare()
0031 {
0032     QDate dt = QDate::currentDate();
0033     Journal journal1;
0034     journal1.setDtStart(QDateTime(dt, {}));
0035     journal1.setAllDay(true);
0036     journal1.setSummary(QStringLiteral("Journal Summary"));
0037     journal1.setDescription(QStringLiteral("This is a description of my journal"));
0038     journal1.setLocation(QStringLiteral("the place"));
0039 
0040     Journal journal2;
0041     journal2.setDtStart(QDateTime(dt, {}).addDays(1));
0042     journal2.setAllDay(true);
0043     journal2.setSummary(QStringLiteral("Journal2 Summary"));
0044     journal2.setDescription(QStringLiteral("This is a description of another journal"));
0045     journal2.setLocation(QStringLiteral("the other place"));
0046 
0047     QVERIFY(!(journal1 == journal2));
0048     QVERIFY(journal2.summary() == QLatin1String("Journal2 Summary"));
0049 }
0050 
0051 void JournalTest::testClone()
0052 {
0053     QDate dt = QDate::currentDate();
0054     Journal journal1;
0055     journal1.setDtStart(QDateTime(dt, {}));
0056     journal1.setAllDay(true);
0057     journal1.setSummary(QStringLiteral("Journal1 Summary"));
0058     journal1.setDescription(QStringLiteral("This is a description of the first journal"));
0059     journal1.setLocation(QStringLiteral("the place"));
0060 
0061     Journal *journal2 = journal1.clone();
0062     QVERIFY(journal1.summary() == journal2->summary());
0063     QVERIFY(journal1.dtStart() == journal2->dtStart());
0064     QVERIFY(journal1.description() == journal2->description());
0065     QVERIFY(journal1.location() == journal2->location());
0066     delete journal2;
0067 }
0068 
0069 void JournalTest::testRich()
0070 {
0071     QDate dt = QDate::currentDate();
0072     Journal journal1;
0073     journal1.setDtStart(QDateTime(dt, {}));
0074     journal1.setAllDay(true);
0075     journal1.setSummary(QStringLiteral("<html><b><i>Journal1 Summary</i></b></html>"), true);
0076     journal1.setDescription(QStringLiteral("<html>This is a of the <b>first</b> journal</html>"), true);
0077     journal1.setLocation(QStringLiteral("<qt><h1>the place</h1></qt>"), true);
0078     QVERIFY(journal1.summaryIsRich());
0079     QVERIFY(journal1.descriptionIsRich());
0080     QVERIFY(journal1.locationIsRich());
0081 }
0082 
0083 void JournalTest::testCopyConstructor()
0084 {
0085     QDate dt = QDate::currentDate();
0086     Journal journal1;
0087     journal1.setDtStart(QDateTime(dt, {}));
0088     journal1.setAllDay(true);
0089     journal1.setSummary(QStringLiteral("Journal1 Summary"));
0090     journal1.setDescription(QStringLiteral("This is a description of the first journal"), true);
0091     journal1.setLocation(QStringLiteral("the place"));
0092 
0093     Journal journal2 {journal1};
0094     QVERIFY(journal2.descriptionIsRich());
0095     QVERIFY(journal1 == journal2);
0096 }
0097 
0098 void JournalTest::testAssign()
0099 {
0100     QDate dt = QDate::currentDate();
0101     Journal journal1;
0102     journal1.setDtStart(QDateTime(dt, {}));
0103     journal1.setAllDay(true);
0104     journal1.setSummary(QStringLiteral("Journal1 Summary"));
0105     journal1.setDescription(QStringLiteral("This is a description of the first journal"), true);
0106     journal1.setLocation(QStringLiteral("the place"));
0107 
0108     Journal journal2;
0109     IncidenceBase *ib2 = & journal2;
0110     *ib2 = journal1;     // Use IncidenceBase's virtual assignment.
0111     QVERIFY(journal2.descriptionIsRich());
0112     QVERIFY(journal1 == journal2);
0113 }
0114 
0115 void JournalTest::testSerializer_data()
0116 {
0117     QTest::addColumn<KCalendarCore::Journal::Ptr>("journal");
0118 
0119     Journal::Ptr journal1 = Journal::Ptr(new Journal());
0120 
0121     QTest::newRow("journal") << journal1;
0122 }
0123 
0124 void JournalTest::testSerializer()
0125 {
0126     QFETCH(KCalendarCore::Journal::Ptr, journal);
0127     IncidenceBase::Ptr incidenceBase = journal.staticCast<KCalendarCore::IncidenceBase>();
0128 
0129     QByteArray array;
0130     QDataStream stream(&array, QIODevice::WriteOnly);
0131     stream << incidenceBase;
0132 
0133     Journal::Ptr journal2 = Journal::Ptr(new Journal());
0134     IncidenceBase::Ptr incidenceBase2 = journal2.staticCast<KCalendarCore::IncidenceBase>();
0135     QVERIFY(*journal != *journal2);
0136     QDataStream stream2(&array, QIODevice::ReadOnly);
0137     stream2 >> incidenceBase2;
0138     QVERIFY(*journal == *journal2);
0139 }
0140 
0141 #include "moc_testjournal.cpp"