File indexing completed on 2024-04-21 14:54:25

0001 /*
0002     This file is part of kcontacts.
0003     SPDX-FileCopyrightText: 2016 Benjamin Löwe <benni@mytum.de>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #include "datetimetest.h"
0009 #include <QTest>
0010 #include <vcardtool_p.h>
0011 
0012 DateTimeTest::DateTimeTest(QObject *parent)
0013     : QObject(parent)
0014 {
0015 }
0016 
0017 DateTimeTest::~DateTimeTest()
0018 {
0019 }
0020 
0021 void DateTimeTest::shouldParseDateTime()
0022 {
0023     using namespace KContacts;
0024 
0025     QDateTime expected;
0026     QDateTime dt;
0027     bool timeIsValid;
0028 
0029     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33:30+0200"));
0030     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::OffsetFromUTC, 2 * 3600);
0031     QCOMPARE(dt, expected);
0032     QVERIFY(dt.isValid());
0033 
0034     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33:30+02"));
0035     QCOMPARE(dt, expected);
0036     QVERIFY(dt.isValid());
0037 
0038     dt = VCardTool::parseDateTime(QStringLiteral("20160120T123330+0200"));
0039     QCOMPARE(dt, expected);
0040     QVERIFY(dt.isValid());
0041 
0042     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33Z"));
0043     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), Qt::UTC);
0044     QCOMPARE(dt, expected);
0045     QVERIFY(dt.isValid());
0046 
0047     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33-0300"));
0048     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), Qt::OffsetFromUTC, -3 * 3600);
0049     QCOMPARE(dt, expected);
0050     QVERIFY(dt.isValid());
0051 
0052     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20T12:33"), &timeIsValid);
0053     expected = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 0), Qt::LocalTime);
0054     QCOMPARE(dt, expected);
0055     QVERIFY(timeIsValid);
0056     QVERIFY(dt.isValid());
0057 
0058     dt = VCardTool::parseDateTime(QStringLiteral("2016-01-20"), &timeIsValid);
0059     expected = QDateTime(QDate(2016, 1, 20), QTime(), Qt::LocalTime);
0060     QCOMPARE(dt, expected);
0061     QVERIFY(dt.isValid());
0062     QVERIFY(!timeIsValid);
0063     QCOMPARE(dt.time(), QTime(0, 0));
0064 
0065     dt = VCardTool::parseDateTime(QStringLiteral("T1233Z"), &timeIsValid);
0066     QVERIFY(!dt.isValid());
0067     QVERIFY(timeIsValid);
0068     QCOMPARE(dt.time(), QTime(12, 33));
0069 
0070     dt = VCardTool::parseDateTime(QStringLiteral("--0120"));
0071     expected = QDateTime(QDate(-1, 1, 20).startOfDay());
0072     QCOMPARE(dt, expected);
0073     QVERIFY(dt.isValid());
0074 
0075     dt = VCardTool::parseDateTime(QStringLiteral("--01-20"));
0076     expected = QDateTime(QDate(-1, 1, 20).startOfDay());
0077     QCOMPARE(dt, expected);
0078     QVERIFY(dt.isValid());
0079 }
0080 
0081 void DateTimeTest::shouldCreateDateTime()
0082 {
0083     using namespace KContacts;
0084 
0085     QDateTime dt;
0086     QString str;
0087     QString expected;
0088 
0089     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::UTC);
0090     str = VCardTool::createDateTime(dt, VCard::v4_0);
0091     expected = QStringLiteral("20160120T123330Z");
0092     QCOMPARE(str, expected);
0093 
0094     dt = QDateTime(QDate(2016, 1, 20), QTime(), Qt::UTC);
0095     str = VCardTool::createDateTime(dt, VCard::v4_0);
0096     expected = QStringLiteral("20160120T000000Z");
0097     QCOMPARE(str, expected);
0098 
0099     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::LocalTime);
0100     str = VCardTool::createDateTime(dt, VCard::v4_0);
0101     expected = QStringLiteral("20160120T123330");
0102     QCOMPARE(str, expected);
0103 
0104     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::OffsetFromUTC, -2 * 3600);
0105     str = VCardTool::createDateTime(dt, VCard::v4_0);
0106     expected = QStringLiteral("20160120T123330-0200");
0107     QCOMPARE(str, expected);
0108 
0109     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::OffsetFromUTC, +2.5 * 3600);
0110     str = VCardTool::createDateTime(dt, VCard::v4_0);
0111     expected = QStringLiteral("20160120T123330+0230");
0112     QCOMPARE(str, expected);
0113 
0114     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30), Qt::OffsetFromUTC, -2 * 3600);
0115     str = VCardTool::createDateTime(dt, VCard::v3_0);
0116     expected = QStringLiteral("2016-01-20T12:33:30-02:00");
0117     QCOMPARE(str, expected);
0118 
0119     dt = QDateTime(QDate(), QTime(12, 33, 30), Qt::OffsetFromUTC, -2 * 3600);
0120     str = VCardTool::createDateTime(dt, VCard::v3_0);
0121     expected = QString();
0122     QCOMPARE(str, expected);
0123 
0124     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30));
0125     str = VCardTool::createDateTime(dt, VCard::v3_0, false);
0126     expected = QStringLiteral("2016-01-20");
0127     QCOMPARE(str, expected);
0128 
0129     dt = QDateTime(QDate(2016, 1, 20), QTime(12, 33, 30));
0130     str = VCardTool::createDateTime(dt, VCard::v4_0, false);
0131     expected = QStringLiteral("20160120");
0132     QCOMPARE(str, expected);
0133 }
0134 
0135 void DateTimeTest::shouldCreateDate()
0136 {
0137     using namespace KContacts;
0138 
0139     QDate d;
0140     QString str;
0141     QString expected;
0142 
0143     d = QDate(2016, 1, 20);
0144     str = VCardTool::createDate(d, VCard::v3_0);
0145     expected = QStringLiteral("2016-01-20");
0146     QCOMPARE(str, expected);
0147 
0148     d = QDate(2016, 1, 20);
0149     str = VCardTool::createDate(d, VCard::v4_0);
0150     expected = QStringLiteral("20160120");
0151     QCOMPARE(str, expected);
0152 
0153     d = QDate(-1, 1, 20);
0154     str = VCardTool::createDate(d, VCard::v3_0);
0155     expected = QStringLiteral("--01-20");
0156     QCOMPARE(str, expected);
0157 
0158     d = QDate(-1, 1, 20);
0159     str = VCardTool::createDate(d, VCard::v4_0);
0160     expected = QStringLiteral("--0120");
0161     QCOMPARE(str, expected);
0162 }
0163 
0164 QTEST_MAIN(DateTimeTest)
0165 
0166 #include "moc_datetimetest.cpp"